如果
回答
不,這不是推薦的做法。
你必須考慮其他因素,如:
- 的generting類的線程關聯性的要求。
- 無論UI元素都參與(一個上螺紋親和力變化)
- 無論對事件作出響應可以接受多個線程的併發處理的類(又名是它們線程)。
- 是否存在涉及線程本地數據(例如Thread.CurrentPrincipal,HttpContext等)
- 無論您是從多線程處理中獲得什麼,
多線程使事情變得複雜。異步事件處理需要多線程。如果它向您購買了一些東西(例如,改進的性能,更敏感的用戶交互,簡化更復雜的其他東西),則只應該引入複雜性。
不知道具體情況的細節,不可能推薦異步事件是否合適。但所有的事情都是平等的 - 我會避免異步事件,除非我有強烈的理由。
除了已知與某個UI對象具有線程關聯性的對象或者期望由某個特定線程定期輪詢的對象之外,還有什麼實際的替代方法可以在線程中引發事件,以便對象發現它們是需要的並且需要那些需要特定線程關聯的事件處理程序自己執行同步? – supercat 2012-04-09 19:22:59
不,它不是。事實上,非同尋常地舉辦活動可能會在您的計劃中引入大量新問題。除非你有令人信服的理由,否則你不應該這樣做。
不,不建議練習。所有通常的注意事項都適用,因爲您需要確保不會發生死鎖和比賽。
簡而言之,如果所有事件都可以異步調用,那將是非常好的,但是您必須謹慎使用任何多線程代碼庫。
我想添加一些除了LBushkin的偉大答案之外的東西。
這種方法的另一個問題是,你將採取一個確定的模式(事件),基本上沒有警告用戶改變函數的方式。這是混淆用戶並在其應用程序中創建錯誤的祕訣。
是的,你可以爭辯說,人們應該閱讀文檔。但是真正的誰會閱讀標準.Net事件的文檔,看看它是否像.Net框架中的其他任何事件一樣被解僱。答案不是太多人。
除非有非常有說服力的理由,否則一般來說,打破已有模式是一個壞主意。
- 1. 如果如果
- 2. 如何寫(如果,如果,如果)否則如果沒有
- 3. 如果賓果
- 4. xsl如果在xsl如果
- 5. 區別,如果,如果(JAVA)
- 6. 要'如果'或不''如果'
- 7. PHP如果或如果somethingelse
- 8. 如果錯誤+如果+ VlookUp
- 9. 替代如果,否則如果,否則如果,否則,如果等在JavaScript
- 10. netLOGO嵌套如果如果設置外部的值如果在內部如果
- 11. 遍歷如果返回,如果假,如果是真的=>停止,如果
- 12. 如何,如果,如果沒有
- 13. 如果
- 14. 如果
- 15. 如果「
- 16. 如果
- 17. 如何如果
- 18. PHP回聲如果結果
- 19. Defiantjs如果沒有結果
- 20. 如果更改結果
- 21. 多重如果結果爲
- 22. 如果結果以單詞
- 23. re.search()如果結果是無
- 24. Clojure koans :(如果false [])vs(如果false [:a:b:c])
- 25. 如果聲明:如果MYSQL值=空?
- 26. 批量 - 如果/否則/如果***回覆
- 27. 如果和如果存在的區別
- 28. 重氮:如果沒有如果路徑
- 29. 如果沒有結束塊如果
- 30. 如果否則如果else子句
我沒有看到異步代碼執行和事件參數的概念之間的任何固有連接。參數只是爲函數提供了一些輸入(或者在這裏是一個事件處理器方法)。爲什麼不應該對它們的參數做任何事情的函數都需要異步執行? – stakx 2010-06-10 19:43:05