6

コールバックのある非同期メソッドがある場合

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

どうすればそれを待つことができますか?

[この方法は Windows Phone 7 用ですが、同様の C# 構造にも同様に適用できるはずです]

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

この呼び出しに awaitable ラッパーを配置したいので、コールバックが完了するのを待ってから次のコマンドに進みます。

4

1 に答える 1

7

を使用できますTaskCompletionSource

var tcs = new TaskCompletionSource<TypeOfCallbackParameter>();

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

return tcs.Task;
于 2013-02-01T12:15:50.650 に答える