我讀過AsyncCallback
函數將在委託調用完成後完成所有後處理任務。我的問題是在EndInvoke
之後/低於EndInvoke
後編寫後處理任務的區別是什麼,因爲EndInvoke
將等待直到委託調用返回。爲什麼選擇AsyncCallback?
1
A
回答
4
使用委託的BeginInvoke()方法的要點是目標將異步運行。如果您在BeginInvoke()之後立即調用EndInvoke(),那麼使用它就不再有任何意義。通過直接調用委託,您將獲得完全相同的行爲,減去開銷和線程頭痛。
當目標方法完成時,該值正在獲取回調,異步執行後立即進行回調。只有然後調用EndInvoke(),它立即完成。清理系統資源並在目標方法拋出一個時重新拋出異常。不要按照upvoted的回答中的建議,跳過調用EndInvoke(),至少會泄漏10分鐘的資源。
2
您可以選擇不調用EndInvoke,只依賴回調。通過這種方式,啓動來自代理本身,而不是來自您,並且您不必決定調用何時完成。
相關問題
- 1. 什麼是AsyncCallback?
- 2. 我爲什麼要使用AsyncCallback?
- 3. Android中的AsyncCallBack是什麼?
- 4. OpenID選擇什麼,爲什麼?
- 5. 爲什麼選擇e?
- 6. 爲什麼我UIPickerView選擇
- 7. 爲什麼選擇webservices?
- 8. '&'選擇器選擇什麼?
- 9. 爲什麼UriKind有選擇A:選擇B:選擇A |乙
- 10. 爲什麼禁用選擇鏈接選擇選項?
- 11. 爲什麼Angular默認不選擇正確的選擇選項?
- 12. 爲什麼這個AsyncCallback測試在某些時候會失敗?
- 13. 爲什麼AsyncCallback不能更新我的GridView?
- 14. 爲什麼選擇Thrift,爲什麼不使用HTTP RPC(JSON + gzip)
- 15. 爲php模塊選擇什麼模式?
- 16. 爲什麼選擇自動屬性?
- 17. CSS選擇器不工作,爲什麼?
- 18. C中的選擇排序爲什麼?
- 19. 爲什麼如果它不選擇
- 20. NSTableView跳轉選擇...爲什麼?
- 21. 爲什麼選擇通過SHA384的SHA512?
- 22. java.sql.SQLException:未選擇數據庫 - 爲什麼?
- 23. 爲什麼選擇HTML5地理定位?
- 24. 爲什麼增加innodb_buffer_pool_size減慢選擇?
- 25. 爲什麼在需要之前選擇?
- 26. 爲什麼在WebRTC中選擇DTLS-SRTP?
- 27. 爲什麼jQuery選擇器不工作?
- 28. 選擇Zend OR Symfony?爲什麼?
- 29. 基數分類。爲什麼選擇Xor?
- 30. 爲什麼選擇排序不穩定?
謝謝Bas。但是EndInvoke只有在委託成功完成後才能執行,不是什麼問題? – logeeks 2011-05-01 19:36:21
您可以檢查操作是否在提供的IAsyncResult參數上使用IsCompleted完成。 – Bas 2011-05-01 19:41:24
不*忽略調用EndInvoke()。 – 2011-05-01 20:21:15