GitUI.CommandsDialogs.FormBrowse.GetSubmoduleStatusImageAsync C# (CSharp) Method

GetSubmoduleStatusImageAsync() private method

private GetSubmoduleStatusImageAsync ( ToolStripMenuItem mi, GitModule module, string submodulePath ) : Task
mi System.Windows.Forms.ToolStripMenuItem
module GitCommands.GitModule
submodulePath string
return Task
        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());
        }
FormBrowse