【发布时间】:2015-05-18 21:06:18
【问题描述】:
我的项目中有一个控件,它提供了一个繁忙的指示器(旋转圆圈)。我希望它在用户选择文件以将数据加载到数据网格时运行。但是,在填充我的数据网格之前,繁忙的指示器不会显示。如何在检索数据时显示繁忙指示器?我相信我应该使用线程,但对它们还不太了解,并且正在努力学习。我尝试了很多不同的方法,下面是我最近的尝试,我不知道我是否接近。
public void DoWork()
{
this.StartProgressBar();
Task.Factory.StartNew(() =>
{
UIDispatcher.Current.BeginInvoke(() =>
{
if (fileCompleted != null && !string.IsNullOrEmpty(fileCompleted.SelectedFile))
{
this.TestResults.Clear();
LoadedFileInfo info = this.Model.OpenTestCompleted(fileCompleted.SelectedFile);
foreach (var model in info.Sequence.Models)
{
foreach (var details in model.Tests)
{
this.TestResults.Add(new TestResultsModel(details, model.Name.Substring(0, model.Name.IndexOf('.'))));
}
}
}
});
});
}
private void StartProgressBar()
{
TaskScheduler scheduler = TaskScheduler.FromCurrentSynchronizationContext();
CancellationToken cancelationToken = new CancellationToken();
Task.Factory.StartNew(() => this.StopProgressBar()).ContinueWith(
m =>
{
this.ToggleProgressBar = true;
},
cancelationToken,
TaskContinuationOptions.None,
scheduler);
}
private void StopProgressBar()
{
this.ToggleProgressBar = false;
}
【问题讨论】:
-
你可能想看看 backgroundworker:msdn.microsoft.com/de-de/library/…
-
感谢您的回复,我查看了它,但我不太了解它是否知道我在我的情况下是否正确使用了该示例。我不确定如何将我的代码放在上面并将其分解为后台任务。你能在这里提供任何帮助吗?