我正在将应用程序从 Silverlight 迁移到 Windows 8,并且我想利用 System.Theading.Tasks API。我有许多具有 Start() 方法并在完成后触发 Completed 事件的类。有人知道如何将其包装在任务中吗?
问问题
590 次
2 回答
1
传统的异步模式是每个异步调用的 Begin 和 End 方法。您可以使用 FromAsync 方法将其包装在 Task 中。
在这里您可以找到一些文档。您可以使用相同的功能,但随后使用您的 Start 和 End 方法。
于 2011-12-26T20:48:34.500 回答
0
你可以使用TaskCompletionSource<TResult>
类。它将允许您手动控制任务的完成。
例如:
var tcs = new TaskCompletionSource<int>();
myService.Completed += (sender,args) => { tcs.SetResult(args.Value) };
myService.Start();
return tcs.Task;
于 2012-05-15T19:19:29.153 回答