我正在編寫一些新代碼並希望使用async編寫它並等待,但調用代碼當前未用async編寫。以異步方式編寫新代碼並將其稱爲同步,直到調用代碼支持異步爲止是正確的嗎?在異步中寫入新代碼但調用同步
或者我應該寫代碼同步,然後在稍後的日期轉換它?這會被視爲技術債務嗎?
public Result Execute(Paramerters parameters) {
return ExecuteAsync(parameters).Result;
}
public Task<Result> ExecuteAsync(Paramerters parameters) {
...
}
Execute
是在一個接口上,並從一些還不是異步的其他代碼調用。創建異步版本並從Execute
調用它是否正確,直到調用Execute
的代碼轉換爲異步? 我的舊代碼是用.net 4.5.1編寫的,但尚未轉換爲async。
我強烈建議堅持使用「異步一路下來」的口頭禪並立即更新代碼。這是一個很好的閱讀主題:http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html還要記住,「我們將修復其餘的稍後「方法很可能是整個軟件開發行業最普遍的錯覺。不要完成一半的事情。要麼使代碼異步或不要。 – David
這就是所謂的「異步同步」並且是反模式。它通常是*一個非常糟糕的主意,並且一些異步同步或異步同步的組合可能*完全死鎖* ... –