1
我正在與第三方DLL公開的方法返回Task
和Task<T>
。我對這個程序集或接口沒有任何控制權,並且我假定作者認爲所有的東西都需要是異步的,因爲方法的命名是* Async(),如下所示。如果您沒有任何異步代碼,您如何處理返回任務的第三方接口?
鑑於此,如果我實際上沒有任何異步代碼運行,我該如何正確實現接口?
public interface IFoo
{
Task DoWorkAsync();
Task<int> GetValueAsync();
}
我的嘗試是以下幾點:
public class FooBar : IFoo
{
public async Task DoWorkAsync()
{
// Do Some Work
await Task.Yield();
}
public async Task<int> GetValueAsync()
{
// Do Some Work
var result = ...;
return Task.FromResult(result);
}
}
此外:
- 有人撰文揭露僅返回
Task
/Task<T>
方法正確嗎? - 作者使用* Async()後綴方法名稱是否正確?如果我編寫異步方法而不將異步添加到名稱,則代碼分析不會投訴。
我會說調用方法'異步'是。明確而簡單,尤其是。當你升級並試圖保持向後兼容的方法'GetSomething'和'GetSomethingAsync'時。 – rbm
我通常做你的兩種方法的前者。如果沒有什麼可以等待,那就沒有什麼可以等待了。似乎沒有必要,但第三方庫就是它們。 – David
@大衛:沒有兩種方法顯示,這是兩種不同的方法,其中一種在技術上沒有返回,這就是爲什麼它只是「任務」而不是「任務」。 –
michael