我只是很好奇,知道爲什麼在C#中異步調用的返回類型是IAsynceResult?爲什麼異步調用的返回類型是.NET中的IAsyncResult?
回答
它還會是什麼?它不能成爲電話會議的「最終」結果,因爲這還不知道。基本上它是一個代表異步調用的值,以便您稍後可以確定它是否完成,結果是什麼等。
對於非無效的異步調用,這不是通用的(在結果類型中),但這是由於.NET 1不支持泛型的遺留問題。
編輯:我幾乎提到Task<T>
最初。麻煩的是,有很多地方已經聲明該方法返回IAsyncResult
,並且您不能僅僅改變左側,右側和中間的API。我偶爾想知道如果MS在發佈之前等待泛型,那麼.NET會有多大的變化。當然,這種論點總是適用的,但對於泛型而言,IMO尤其重要。
我同意 - 泛型顯然提供了一個更好的解決方案,並且遺憾的是,.Net框架的這個領域自成立以來一直被忽視。這就是說 - 在整個框架中可能會發生很大的變化,所以我不會因爲猶豫而責怪他們! – 2010-02-10 11:05:06
當然PFX確實提供了這樣一個通用的回報:'任務
IAsyncResult提供了監視異步調用進度的能力,並提供了一個'token',稍後可以將其傳遞給您通常看到的異步方法對的'Complete___'方法。
由於異步調用無法返回操作的實際值,因此此接口爲該調用的狀態提供了一個容器,以便稍後使用該容器來獲取結果。
當考慮到您可能對同一個未完成的方法進行多個異步調用時,這一點尤其重要 - IAsyncResult實例有助於單獨識別每個方法。
因爲這是一個異步調用,實際的最終結果還不知道。所以,返回類型基本上是您對所做調用的引用,因此您可以跟蹤它的完成時間。
認爲它有點像您將包裹關閉以便通過記錄/追蹤遞送遞送時獲得的機票 - 該機票爲您提供了檢查遞送進度並在稍後進行跟蹤的方法。
由於經典的異步模式實現。
IAsyncResult對象返回開始方法並表示一個單獨的異步操作。它包含方法和屬性,提供有關異步操作的一些基本信息。
進行一次異步呼叫就像是要求某人出門,並在方便時做些事情。 IAsyncResult是該請求的句柄。您可以使用它來等待任務完成,查詢進度,並從任務中獲取任何結果和/或例外。反而會更喜歡什麼?
- 1. 爲什麼javascript回調是異步的?
- 2. C#.NET異步等待返回類型
- 3. 異步AJAX調用返回什麼?
- 4. 從Task的非異步方法返回什麼作爲返回類型?
- 5. 爲什麼此回調不是異步調用的
- 6. .NET中事件的返回類型是什麼?
- 7. 返回類型爲void的方法返回的是什麼?
- 8. 帶回調的.NET異步webservice調用
- 9. 爲什麼返回類型void在.NET中聲明爲struct?
- 10. 什麼是返回類型的方法調用?
- 11. 什麼是MembershipUserCollection.GetEnumerator的返回類型();
- 12. 什麼是document.getElementById()的返回類型
- 13. 什麼是枚舉的返回類型|?
- 14. 什麼是printf的返回類型
- 15. typeof的返回類型是什麼?
- 16. 什麼是cookie的返回類型?
- 17. 什麼是Http.get()。catch的返回類型?
- 18. quandl.get返回的類型是什麼?
- 19. 爲什麼Scala保持不返回Iterable的類型(如.Net)?
- 20. 異步調用返回值?
- 21. 爲什麼事件在.NET中沒有返回類型?
- 22. JS異步庫中的回調參數是做什麼的?
- 23. 異步回調返回null
- 24. 在Rust中使用`!`作爲返回類型是什麼?
- 25. C#5異步返回類型-clarification?
- 26. 爲什麼異步方法返回類型不能從任務派生?
- 27. 爲什麼異步任務<TResult>總是返回空值
- 28. 爲什麼func1的返回類型是Unit,而func2是Int?
- 29. .net中的類型安全是什麼?
- 30. 什麼是WinForm應用程序中的DateTimePicker的返回類型?
@Praveen:這個問題與C#無關。 VB.NET中異步調用的返回類型與所有.NET語言中的返回類型相同。這是因爲它不是一種語言功能 - 它是一種.NET功能。看到區別? – 2010-02-10 11:04:48