Как сделать асинхронный метод "старого стиля" доступным

Если у меня есть асинхронный метод с обратным вызовом

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;
Другие вопросы по тегам