使用Timer
對象,我可以設置SynchronizingObject
屬性以避免在從定時器的事件處理程序更新GUI時不得不使用invoke。如果我有一個類而不是訂閱一個事件並且必須更新事件處理程序中的GUI,是否有類似的概念?還是必須編寫InvokeRequired樣板代碼?SynchronizingObject對於事件
3
A
回答
3
SynchronizingObject
只是一個ISynchronizeInvoke
屬性。 (例如,該接口由WinForms控件實現。)
您可以自己使用相同的接口,但使用vanilla事件無法真正指定同步對象。
什麼你可能做的是寫一個實用的方法,這需要委託和ISynchronizeInvoke
,並返回一個代表,這使得確保原委託是正確的線程上運行。
例如:
public static EventHandler<T> Wrap<T>(EventHandler<T> original,
ISynchronizeInvoke synchronizingObject) where T : EventArgs
{
return (object sender, T args) =>
{
if (synchronizingObject.InvokeRequired)
{
synchronizingObject.Invoke(original, new object[] { sender, args });
}
else
{
original(sender, args);
}
};
}
-1
您可以查看BackgroundWorker課程。
相關問題
- 1. 對於事件循環
- 2. 這是防守加成嗎? 「.SynchronizingObject = this;」
- 3. 防止事件冒泡(對於javascript onclick事件)
- 4. 骨幹 - 鑑於事件自定義事件對象
- 5. 3d鼠標事件:對於z尺寸
- 6. 「時區較少事件」對於Facebook
- 7. 基於對象的畫布javascript事件
- 8. onclick事件對於圖片框
- 9. 對於asp.net MVC的事件日曆
- 10. 基於觸摸事件旋轉對象
- 11. 事件?對於Windows中的TimeChanged
- 12. 對於多個按鈕的Onclick事件
- 13. jquery事件不適用於對象?
- 14. OnExit事件對於Swing應用程序?
- 15. 對於提交事件,ajax請求返回status = 0,但對於keyup事件使用status = 200
- 16. Javascript等效於iOS的「tap」事件,但對於android
- 17. 取決於事件
- 18. 關於deviceorientation事件
- 19. 關於'ElementHasChildren'事件
- 20. jQuery的「對」事件「負荷」事件
- 21. 如何繪製一個事件相對於其他事件的頻率?
- 22. 如何將這些jQuery鼠標事件轉換爲觸摸事件(對於iPad)
- 23. 針對webcomponents /自定義事件(JS)的基於HTML的事件偵聽器
- 24. 對於Angular2導航類型「事件」,Property'url'不存在導航EndEnd事件
- 25. 自定義事件對於自定義的jQuery插件
- 26. JavaScript:事件對象
- 27. JS對象事件
- 28. 對事件ID(0)
- 29. KnockoutJS:事件對象
- 30. 事件對象bic_calendar
這是類適合使用時,我想用一個自定義的類(非的WinForms)同步,如下所示:http://stackoverflow.com/q/10654163/ 328397 – LamonteCristo 2012-05-18 16:25:19
@ makerofthings7:我不認爲這是我在這種情況下使用的方法,不。如果您使用.NET 4,請查看TPL提供的內容。 – 2012-05-18 16:27:49