asynchronous - 如何在.net核心的同步方法中调用异步方法
问题描述
我找到了一些在同步方法上调用异步方法的方法,但我不知道.net 核心中最好的方法是什么,为什么?
DebugLog.Log(ex.ToString()).GetAwaiter();
System.Threading.Tasks.Task.Run(async () => await DebugLog.Log(ex.ToString()));
DebugLog.Log(ex.ToString()).RunSynchronously();
DebugLog.Log(ex.ToString()).ConfigureAwait(default);
解决方案
我不知道.net core 中最好的方法是什么,为什么?
没有最好的办法。如果有,那么每个人都会使用它。
有多种方法,每种方法都有自己的缺点。最常见的两种是:
GetAwaiter().GetResult()
(即直接阻塞) -可以死锁。Task.Run(...).GetAwaiter().GetResult()
...
(即,阻塞线程池线程) - 如果需要当前上下文,则不起作用。
RunSynchronously
永远不应该使用。
推荐阅读
- android - Android Emulator Wear OS P - There's an internal problem with your device
- vba - 将 Sheet1 和 Sheet2 中的值复制粘贴到上传工作表中
- python - Python regex: Get regex pattern in a text file and store in an array or list
- amazon-web-services - 如何使用 CloudFormation 将 RDS 错误日志发布到 CloudWatch?
- java - Unable to add a logic to sort with dates in the existing comparator in Java/android
- javascript - 如何从存储中检索 3 条记录并使用 promise join 将它们放入 dbResult
- c++ - 模数不返回数字的余数
- autodesk-forge - bim360 的 react-native 应用程序的 3 条腿身份验证
- javascript - 如何循环发布 vue Javascript
- android - 使用数据库控制按钮