0
我有一個類,它負責經典的蛇遊戲邏輯的邏輯,它使用System.Timers.Timer
。因爲完全相同的項目的Windows窗體版本使用完全相同的類,所以我不想更改它。System.Timers.Timer調用WPF組件的方法
如何將WPF窗口的方法連接到旨在用於WinForms(ISynchronizeInvoke
)的事件?我正在尋找相當長的一段時間來實現這一點,而不用重寫我的邏輯類。
我有一個類,它負責經典的蛇遊戲邏輯的邏輯,它使用System.Timers.Timer
。因爲完全相同的項目的Windows窗體版本使用完全相同的類,所以我不想更改它。System.Timers.Timer調用WPF組件的方法
如何將WPF窗口的方法連接到旨在用於WinForms(ISynchronizeInvoke
)的事件?我正在尋找相當長的一段時間來實現這一點,而不用重寫我的邏輯類。
可以使用Dispatcher
調用到UI線程
private void ThreadingTimerTick(object state)// or whatever your method is.
{
Dispatcher.Invoke(DispatcherPriority.Background, (Action)delegate()
{
// do stuff
});
}
這是很清楚如何使用ISynchronizeInvoke。但是你可以寫一個實現它的小輔助類,並使用Dispatcher來實現這四種方法。它使用相同的名稱,但InvokeRequired是Dispatcher.CheckAccess()。 –
這對我來說是一個缺失的鏈接,但可能還不夠。我可能需要打開另一個問題,或者細化這個問題... –
如何實現IAsyncResult接口以用於此用途? –