2

我正在将应用程序从 Silverlight 迁移到 Windows 8,并且我想利用 System.Theading.Tasks API。我有许多具有 Start() 方法并在完成后触发 Completed 事件的类。有人知道如何将其包装在任务中吗?

4

2 回答 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 回答