从第三方dll调用异步方法作为同步C#

本文关键字:同步 异步方法 第三方 dll 调用 | 更新日期: 2023-09-27 18:29:40

关于调用异步进程,我的大脑有点冻结。我有我的void主函数,我想从第三方dll中调用一个只作为异步方法存在的方法——我不在乎它是异步的,我只想同步运行它。

那么我该怎么做呢?我快速了解了如何在C#中从同步方法调用异步方法?但这似乎有点复杂,必须担心上下文等。这应该很容易,对吧?

谢谢Thomas

从第三方dll调用异步方法作为同步C#

只需获取返回的Task的Result属性

var returned = methodCall().Result;

这将被阻止,直到任务完成,然后返回。如果它已经完成,它将继续正常执行。我认为您只是想同步地调用一次单个方法,但以防万一,请注意,如果您有多个异步调用,则需要先调用它们,然后调用结果

var returned1 = methodCall1(); // this is a Task<List<string>>
var returned2 = methodCall2();
var actualValue1 = returned1.Result; // this is the associated List<string>
var actualValue2 = returned2.Result;