我看到很多关于从同步方法调用异步方法的问题,例如:How to call asynchronous method from synchronous method in C#?
我理解这些解决方案,但是,通过实验,我发现我不需要添加.Wait()orTask.Run(async () => await MyAsyncMethod())来使其同步运行。我有一个从数据库中提取信息的 get 方法。
我的代码如下,当我运行时,它会等待var task = GetItemAsync(),然后我从数据库中得到正确的结果。我发现很难相信数据库调用可以在代码继续运行之前返回,这似乎意味着它是同步运行的。我错过了什么吗?
public object GetItem()
{
var task = GetItemAsync();
var result = task.Result;
return result
}
Run Code Online (Sandbox Code Playgroud) 我有一个适用于某些计算机而不是其他计算机的解决方案。例外是这样的:
无法从程序集“Microsoft.Extensions.Logging.Abstractions,版本=3.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”加载类型“Microsoft.Extensions.Logging.Abstractions.Internal.NullScope”
从诊断集输出构建中添加的信息说:
抛出异常:Services.dll 中的“System.Exception”。抛出异常:System.Private.Corelib.dll 中的“System.Exception”
我试图找出两台计算机之间的区别,但结果却不尽人意。
CustomUnit unit = await _dbContext.CustomUnit
.Include(x => x.Type)
.Include(x => x.UnitBuckets)
.Include(x => x.InventoryBuckets)
.Include(x => x.WIPBuckets)
.ThenInclude(y => y.Unit)
.SingleOrDefaultAsync(x => x.UnitId == unitId);
Run Code Online (Sandbox Code Playgroud)
工作的机器总是工作,而不工作的机器永远工作。我试过清除 nuget 缓存、删除和重新添加引用、删除和重新克隆项目到新位置都没有结果。由于所有机器都是从同一分支新提取的代码,没有修改,代码库是相同的。我一直无法找到两台机器之间的任何差异来解释为什么它可以在一台机器上运行而不是在另一台机器上运行。谁有想法?