首页 > 解决方案 > 如何同步调用异步方法?

问题描述

所有第 3 部分 API 调用现在都使用 Async 方法。我不想异步使用它们。我想将它们转换为同步,因为我不关心几秒钟,而且我似乎无法在这个遗留程序上一直执行异步。

我只想这样做:

字符串令牌 = api.GetTokenAsync().Result;

但是我看到很多抱怨 Wait() 和 .Result 会死锁!

现在这似乎是非常复杂的情况,我想要一种非常简单的技术来同步调用它。为此必须有简单的技术,因为在很多情况下,您当然必须等待结果。因此,如果您对 UI 锁定感到满意,那么将其设为异步有点多余,因为大多数情况下客户无论如何都会等待,因此在完成之前锁定 UI 并没有什么戏剧性的事情。

更新,我发现这个答案最好: 任务一直等待激活

  var task= Task.Run(async () =>
                   {
                       return await Api.LoginAsync( tbUsername.Text, tbPassword.Text);
                   });
         _Token  = task.Result; 

标签: c#asp.netasynchronousasync-await

解决方案


推荐阅读