1. 程式人生 > >生產環境項目問題記錄系列(二):同步方法調用異步方法

生產環境項目問題記錄系列(二):同步方法調用異步方法

多少 api接口 調用 能說 訪問 記錄 服務化 fig 難了

描述一下問題背景,公司部分項目還在使用老三層框架,存在跨庫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();

雖然是個小問題,也沒花費多少時間,不過萬一沒找到這種方法估計就頭疼了,隨手記錄一下。

生產環境項目問題記錄系列(二):同步方法調用異步方法