netcore 同步方法里调异步,异步方法里调用同步,不死锁写法
/// <summary>
/// 同步方法里调用异步1
/// </summary>
static void SyncMethod()
{
//同步方法中调用异步方法(第一种写法)
AsyncMethod(参数1, 参数2).ConfigureAwait(false).GetAwaiter().GetResult();
//同步方法中调用异步方法2(第二种写法)
AsyncHelper.RunSync(async () =>
{
await loginAppService.AddLoginDetail(autoInfo);
});
//同步方法中调用异步方法3(第三种写法)静默写法,不等待结果
_ = Task.Run(async() =>
{
await ApiUtil.DistributeApi(list);
});
}
//同步方法中调用异步方法3(第三种写法)
public async Task MyAsyncMethod()
{
await Task.Run(() =>
{
// 同步逻辑
});
}
static async Task AsyncMethod()
{
// 异步方法中调用同步方法
await Task.Run(() => AnotherSyncMethod());
}
浙公网安备 33010602011771号