【发布时间】:2014-03-27 14:26:32
【问题描述】:
我正在使用以下代码,问题是当我在 GetUserData() 中出现异常时 我收到消息给用户界面,当我把鼠标放在里面时,鼠标没有停止 鼠标 Cursors.Null 导致转储。 我的问题是:
- 当我遇到异常时如何停止任务 (tpl),即不继续 continueWith ?
- 出现异常时如何忽略鼠标光标?
Mouse.OverrideCursor = Cursors.Wait;
Task.Factory
.StartNew(() =>
{
//-----get service Data ---------
try
{
GetUsersData();
}
catch (Exception e)
{
_isValid = false;
ThrowErrorMessage(e.Message);
Mouse.OverrideCursor = Cursors.Null;
}
})
.ContinueWith((task) =>
{
Mouse.OverrideCursor = null;
}, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
isServiceValid = true;
【问题讨论】:
-
为什么要使用
ContinueWith而不是async/await,你是否仅限于VS2010?否则,如果您需要面向 .NET 4.0 但使用 VS2012+ 进行开发,您仍然可以使用async/await,微软为此提供了Microsoft.Bcl.Async库。
标签: c# wpf asynchronous task-parallel-library task