我有一个资源密集的方法,需要几秒钟才能执行。因此,我决定在任务中调用它,以便在执行任务时显示等待图标。
在创建任务,然后创建任务之前,我所做的就是imgLoading.Visibility = Visibility.Visible
。任务完成后,我会拨打imgLoading.Visibility = Visibility.Collapsed;
。
出于某种原因,图像永远不会崩溃并无限期地保持可见状态。这是一个非常奇怪的问题,很容易重新创建。这是我所有的代码,我真的看不出我做错了什么:
imgLoading.Visibility = Visibility.Visible;
var validityTask = Task.Factory.StartNew(() => ExpensiveMethod(param1,param2));
validityTask.ContinueWith((previousTask) =>
{
bool isvalid = validityTask.Result;
if (isvalid)
{
//Do something to UI
}
else
{
//DO something to UI
}
imgLoading.Visibility = Visibility.Collapsed;
}, TaskScheduler.FromCurrentSynchronizationContext());
正如代码所示,我正在尝试在执行任务时显示imgLoading
图像,并在任务完成时隐藏图标。使用此当前代码,即使任务完成,图标仍然可见。
我做错了什么?
答案 0 :(得分:0)
过了一段时间,我成功地解决了这个问题。在此发布此信息可能有助于将来的某个人。我的问题是这个街区甚至根本没有进入。解决方案是从任务中删除所有UI代码,它起作用:)
答案 1 :(得分:-1)
而不是阅读Result
的{{1}}属性,请从validityTask
阅读。
Here's指向MSDN上示例的链接,显示继续以此方式访问previousTask
属性。