如何使“旧式”异步方法等待

时间:2013-02-01 12:08:31

标签: c# async-await

如果我有一个带回调的异步方法

MyMethodAsync( <Input Parameters ...>, Callback);

我怎么能让它等待?

[此方法适用于Windows Phone 7,但应同样适用于任何类似的c#构造]

DNSEndpoint Endpoint = ...
NameResolutionCallback Callback = (nrr) => { ... }
DeviceNetworkInformation.ResolveHostNameAsync(Enpoint, Callback, null);

我想在这个调用中放置一个等待的包装器,所以我等待回调完成,然后再继续下一个命令。

1 个答案:

答案 0 :(得分:7)

您可以使用TaskCompletionSource

var tcs = new TaskCompletionSource<TypeOfCallbackParameter>();

MyMethodAsync(..., r => tcs.SetResult(r));

return tcs.Task;