我正在實現一個需要實現BeginDoSomething
和EndDoSomething
方法的接口。然而我的DoSomething
並不是很長時間。 爲簡單起見假設DoSomething
只比較兩個變量,並返回是否A> B如何創建立即完成的IAsyncResult?
所以我BeginDoSomething應該是這樣的:
protected override IAsyncResult BeginDoSomething(int a, int b, AsyncCallback callback, object state)
{
bool returnValue = a > b;
return ...; //what should I return here?
//The method actually already completed and I don't need to wait for anything
}
我不知道我應該返回什麼。我只實現了BeginDoSomething
,因爲我必須這樣做,而不是因爲我的方法長時間運行。我是否需要實施我自己的IAsyncResult
? .NET庫中是否有實現?
我認爲`AsyncWaitHandle`屬性應該返回對* set *`ManualResetEvent`(或類似的)的引用。客戶嘗試等待句柄是完全合理的,並且不應該引發異常。 – Ani 2011-02-18 04:16:05
的確,我們可以做到這一點,但作爲一個WaitHandle是一個昂貴的對象,創建一個看起來很浪費,因爲它永遠不會**相關。 – 2011-02-18 04:26:42