.NET中有三個Timer類(Timers.Timer,Threading.Timer和Windows.Forms.Timer)。應該在什麼時候使用?什麼是使用它們的性能含義?.net中的定時器 - 在什麼時候使用?
1
A
回答
1
看看this有幫助。
編輯:除了以上,我認爲定時器的區間容量不同。
我記得有一次在dotnetrocks節目中聽說過它。我會盡力找出答案。
編輯2:也看看MSDN頁面上的人爲每個類添加的注意事項。
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx(這表示,它是用於Windows應用進行優化。因此,應該在窗口應用程序中使用)。
IMO,定時器的功能不同。所以,你將必須決定哪一個適合你的需要,保持在上面記住
1
據我所知,它們之間沒有性能差異 - 與執行邏輯所需的時間相比在計時器已過去的事件處理程序中執行。重要的區別是:
- Timers.Timer和Threading.Timer從單獨的Threading.ThreadPool線程中引發事件。
- Forms.Timer從UI線程中引發事件。
- Timers.Timer可以作爲一個組件放在窗體上。
- Forms.Timer具有更友好的用戶界面。
挑一個取決於您的需求。如果您對計時器過期事件的響應是一種背景工作,必須獨立於UI進行,那麼您需要Timers.Timer或Threading.Timer。如果您對計時器已過的事件的響應是某種形式的視覺反饋,那麼您需要Forms.Timer。
就我個人而言,我會創建一個自定義定時器抽象/接口,並創建三個基於.NET定時器的實現。這將使您在理論上可以在不改變代碼的情況下在不同類型的定時器之間切換。
相關問題
- 1. 什麼時候在.NET中使用GC.Collect()?
- 2. 什麼時候應該使用AWS,什麼時候不使用
- 3. intn_t什麼時候使用它,什麼時候不使用
- 4. 什麼時候使用__proto__和什麼時候使用原型
- 5. 什麼時候使用Ruby和什麼時候使用PHP
- 6. 什麼時候使用for-each和什麼時候在xslt中使用apply-templates?
- 7. 什麼時候使用適配器和什麼時候使用inflater
- 8. 什麼時候在.NET中使用共享方法
- 9. 什麼時候在Django中使用「AbstractBaseUser」?
- 10. 什麼時候在mysql中使用OPTIMIZE
- 11. 什麼時候在hibernate中使用Criteria.ALIAS_TO_ENTITY_MAP?
- 12. 什麼時候在Java中使用「this」
- 13. 什麼時候在C++中使用「declare」?
- 14. 什麼時候使用GWT,什麼時候不需要
- 15. ZF2什麼時候使用getServiceLocator()什麼時候不到
- 16. SQL Server CASE什麼時候不使用CASE什麼時候
- 17. 什麼時候使用uncaught_exception?
- 18. 什麼時候使用vtable?
- 19. 什麼時候使用sIFR?
- 20. JOINS什麼時候使用?
- 21. 什麼時候使用Dispose
- 22. 什麼時候使用ANTLR
- 23. 什麼時候使用StringIO?
- 24. Railties - 什麼時候使用
- 25. 什麼時候使用SpringApplicationBuilder?
- 26. 在Android中,什麼時候使用Uri,什麼時候使用路徑,何時在路徑之前添加`file://?
- 27. 什麼時候使用信號和插槽,什麼時候不使用
- 28. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 29. 什麼時候使用goto * expr;在C?
- 30. 什麼時候在Shippo上使用QUOTE