我遇到如下问题:
我需要实现一个将在同步环境中调用的传统接口:
public interface IWorker {
int GetResult();
}
我需要使用使用async/await
Task<int> ThirdPartyClass.WorkAsync();
如何使用async
方法
public class MyWorker : IWorker {
public int GetResult()
{
// ??? how to use the async calls ???
new ThirdPartyClass().WorkAsync();
}
}
我知道有一个Result
属性,比如int result = c.WorkAsync().Result;
,但据我所知它会阻塞当前线程并可能导致死锁。例如,调用async
方法并在Winforms按钮事件处理程序中使用Result
会导致死锁问题。
对于这种情况,是否有更好的方法来使用async/await
?