描述一下问题背景,公司部分项目还在使用老三层框架,存在跨库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();
虽然是个小问题,也没花费多少时间,不过万一没找到这种方法估计就头疼了,随手记录一下。
原文:https://www.cnblogs.com/weiBlog/p/10236012.html