Как сделать асинхронный метод "старого стиля" доступным
Если у меня есть асинхронный метод с обратным вызовом
MyMethodAsync( <Input Parameters ...>, Callback);
как я могу сделать это ожидаемым?
[Этот метод предназначен для Windows Phone 7, но должен быть одинаково применим к любой аналогичной конструкции C#]
DNSEndpoint Endpoint = ...
NameResolutionCallback Callback = (nrr) => { ... }
DeviceNetworkInformation.ResolveHostNameAsync(Enpoint, Callback, null);
Я хочу поместить ожидающую обертку вокруг этого вызова, поэтому я жду завершения обратного вызова, прежде чем продолжить выполнение следующей команды.
1 ответ
Решение
Вы могли бы использовать TaskCompletionSource
:
var tcs = new TaskCompletionSource<TypeOfCallbackParameter>();
MyMethodAsync(..., r => tcs.SetResult(r));
return tcs.Task;