Retrieve JIRA issue summary async to not block UI

This commit is contained in:
Gregoire Pailler 2014-11-12 14:49:36 +08:00
parent 53bbeece19
commit 31d4a11795

View file

@ -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<string> 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)