1. 程式人生 > >《C#併發程式設計經典例項》學習筆記—2.2 返回完成的任務

《C#併發程式設計經典例項》學習筆記—2.2 返回完成的任務

問題:

如何實現一個具有非同步簽名的同步方法。

從非同步介面或基類繼承程式碼,但希望用同步方式實現方法。
解釋一下所謂的非同步介面和非同步基類。例如如下程式碼

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;
        }
}