《C#併發程式設計經典例項》學習筆記—2.2 返回完成的任務
阿新 • • 發佈:2018-12-20
問題:
如何實現一個具有非同步簽名的同步方法。
從非同步介面或基類繼承程式碼,但希望用同步方式實現方法。
解釋一下所謂的非同步介面和非同步基類。例如如下程式碼
interface IMyAsyncInterface
{
Task<int> GetValueAsync();
}
即,介面和基類中包含了以Task為返回結果的方法,此介面或基類,即為非同步介面或非同步基類。
同步方式實現Task方法
class Class1 : IMyAsyncInterface { Task<int> GetValueAsync() { return Task.FromResult(1); } }
或者
class Class1 : IMyAsyncInterface
{
Task<int> GetValueAsync()
{
var tcs = new TaskCompletionSource<int>();
tcs.SetResult(1);
return tcs.Task;
}
}