private Task GetSubmoduleStatusImageAsync(ToolStripMenuItem mi, GitModule module, string submodulePath)
{
if (String.IsNullOrEmpty(submodulePath))
{
mi.Image = Resources.IconFolderSubmodule;
return null;
}
var token = _submodulesStatusImagesCTS.Token;
return Task.Factory.StartNew(() =>
{
var submoduleStatus = GitCommandHelpers.GetCurrentSubmoduleChanges(module, submodulePath);
if (submoduleStatus != null && submoduleStatus.Commit != submoduleStatus.OldCommit)
{
var submodule = submoduleStatus.GetSubmodule(module);
submoduleStatus.CheckSubmoduleStatus(submodule);
}
return submoduleStatus;
}, token)
.ContinueWith((task) =>
{
mi.Image = GetItemImage(task.Result);
if (task.Result != null)
mi.Text += task.Result.AddedAndRemovedString();
},
CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion,
TaskScheduler.FromCurrentSynchronizationContext());
}