C#:如何在同步环境中使用异步任务?

时间:2016-08-25 14:39:26

标签: c# async-await

我遇到如下问题:

  • 我需要实现一个将在同步环境中调用的传统接口:

    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

0 个答案:

没有答案