From 31d4a11795322ed39bd1b30db09026a46094b335 Mon Sep 17 00:00:00 2001 From: Gregoire Pailler Date: Wed, 12 Nov 2014 14:49:36 +0800 Subject: [PATCH] Retrieve JIRA issue summary async to not block UI --- UploadersLib/Forms/JiraUpload.cs | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/UploadersLib/Forms/JiraUpload.cs b/UploadersLib/Forms/JiraUpload.cs index 107e09d3b..aa7e48c4d 100644 --- a/UploadersLib/Forms/JiraUpload.cs +++ b/UploadersLib/Forms/JiraUpload.cs @@ -31,7 +31,9 @@ namespace UploadersLib.GUI { - public partial class JiraUpload : Form + using System.Threading.Tasks; + + public partial class JiraUpload : Form { public delegate string GetSummaryHandler(string issueId); @@ -64,10 +66,10 @@ public JiraUpload(string issuePrefix, GetSummaryHandler getSummary) private void JiraUpload_Load(object sender, EventArgs e) { + UpdateSummary(null); + txtIssueId.Text = _issuePrefix; txtIssueId.SelectionStart = txtIssueId.Text.Length; - - ValidateIssueId(txtIssueId.Text); } private void textBox1_TextChanged(object sender, EventArgs e) @@ -83,11 +85,22 @@ private void btnSend_Click(object sender, EventArgs e) private void ValidateIssueId(string issueId) { - var res = _getSummary(issueId); - btnUpload.Enabled = (res != null); + Task.Factory + .StartNew(() => _getSummary(issueId)) + .ContinueWith(UpdateSummaryAsync); + } - lblSummary.Text = res ?? Resources.JiraUpload_ValidateIssueId_Issue_not_found; - lblSummary.Enabled = res != null; + private void UpdateSummaryAsync(Task task) + { + this.Invoke((Action)(() => UpdateSummary(task.Result))); + } + + private void UpdateSummary(string summary) + { + btnUpload.Enabled = (summary != null); + + lblSummary.Text = summary ?? Resources.JiraUpload_ValidateIssueId_Issue_not_found; + lblSummary.Enabled = summary != null; } private void btnCancel_Click(object sender, EventArgs e)