c# - 如何同步调用异步方法?
问题描述
所有第 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# - 发送多个抄送地址的电子邮件
- c# - File.WriteAllBytes() 可以在不引发异常的情况下失败吗?
- android - 将小位图(公司徽标)绘制到另一个大位图(全屏图像)并放置在右侧
- c# - 用户首次使用 OpenId Connect 登录后将新的 UserId 放入数据库的位置在哪里?
- node.js - NPM 在相同的 docker 映像上的工作方式不同
- javascript - Node.js 和浏览器中对“this”的不同处理
- sql - MS SQL - 如何按通配符排序结果?
- powerapps - Powerapps 在一个屏幕上创建和编辑
- pandas - 从一系列字典中获取第一个值
- solr - Solr 过滤器查询 - 不适用于多个字段