c# - 有没有一种方法可以同步运行 C# 任务并在一行代码中获得结果?

标签 c# .net asynchronous task synchronous

我有一个异步方法,当我按如下方式调用它时它会起作用:

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/

相关文章:

c# - 如何创建不在 IIS 中托管的 ASP.NET Web 服务?

c++ - C++ 异步任务是否在最常见的 std 库和系统上的不同线程上并行执行?

c# - 使用异步 Web 服务时,什么应该 "await"什么不应该?

c# - 在 C# 中向其他人提供接口(interface)定义的最佳方式是什么?

c# - .NET Framework 4.5 或更高版本中的 AccessViolationException

c# - 创建路径不存在的文件?

.net - 有关 Enum 扩展方法的帮助

.net - 如何使用 LINQ to XML 按属性查找 XML 元素?

javascript - 使时间密集型函数异步

javascript - 在nodejs(异步)中寻找循环和回调的正确模式