我有一个异步方法,当我按如下方式调用它时它会起作用:
var result = await someClass.myAsyncMethod(someParameter);
是否可以在一行代码中做这样的事情?
var task = someClass.myAsyncMethod(someParameter);
task.RunSynchronously();
var result = task.Result;
最佳答案
是的,您可以在调用方法后直接使用 Result
属性来完成此操作:
var result = someClass.myAsyncMethod(someParameter).Result;
更好的方法是将其包装在 Task.Run()
中以避免死锁,例如:
var result = Task.Run(() => {
return someClass.myAsyncMethod(someParameter);
}).Result;
我也找到了这个RunSynchronously() method在 MSDN 上,但这不会解决您的问题,因为您需要在线简单代码。
关于c# - 有没有一种方法可以同步运行 C# 任务并在一行代码中获得结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091315/