生产环境项目问题记录系列:同步方法调用异步方法

Posted weiblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产环境项目问题记录系列:同步方法调用异步方法相关的知识,希望对你有一定的参考价值。

描述一下问题背景,公司部分项目还在使用老三层框架,存在跨库join的情况,在服务化的改造过程中,这些跨库join的老三层从都要被换成对应的服务接口。

目前有个项目通过sql访问了C端产品组的三张表,并且时跨库join,对方开发组要回收表的访问权,所有sql访问的都要改成接口访问。

C端产品组提供的服务接口为.Net Core的Api接口,异步(.net core里HttpClient已经不再提供同步访问了)。而这边调用的是一个老三层架构的定时任务,需要在同步方法里调用异步接口。当然你会问为什么不把你的方法也改成异步的,我只能说一言难尽,不是我不想改,太难了,async就像病毒一样,一方面这是个定时任务,改成异步没有什么收益,另一方面改造完测试要测一堆地方,伤筋动骨没必要,大家打一波。。李姐。

在更换过程中遇到的问题就是同步调异步接口调不通,我分别尝试了以下几种方式:()

(1).....Async().Wait():失败,接口阻塞

(2)await .....Async().ConfigureAwait(false)

(3).....Async().Resutt()

在上面这几种方法失败后,又去百度了几种方法,都不行,最后找到一种解决方式如下:

 

Task task=Task.Run(async ()=>await ......Async());

task.wait();

 

虽然是个小问题,也没花费多少时间,不过万一没找到这种方法估计就头疼了,随手记录一下。

以上是关于生产环境项目问题记录系列:同步方法调用异步方法的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 CPU “最大化”:同步方法异步调用多个工作人员并使用 SemaphoreSlim 进行节流?

结合同步和异步方法调用,并根据异步的结果,我们需要循环同步方法调用

java CountDownLatch 控制异步和同步

WCF 仅异步操作

同步调用异步方法

在单元测试中同步调用异步方法是不是不正确?