2012-12-09 73 views
0

我有一個類,它負責經典的蛇遊戲邏輯的邏輯,它使用System.Timers.Timer。因爲完全相同的項目的Windows窗體版本使用完全相同的類,所以我不想更改它。System.Timers.Timer調用WPF組件的方法

如何將WPF窗口的方法連接到旨在用於WinForms(ISynchronizeInvoke)的事件?我正在尋找相當長的一段時間來實現這一點,而不用重寫我的邏輯類。

+1

這是很清楚如何使用ISynchronizeInvoke。但是你可以寫一個實現它的小輔助類,並使用Dispatcher來實現這四種方法。它使用相同的名稱,但InvokeRequired是Dispatcher.CheckAccess()。 –

+0

這對我來說是一個缺失的鏈接,但可能還不夠。我可能需要打開另一個問題,或者細化這個問題... –

+0

如何實現IAsyncResult接口以用於此用途? –

回答

2

可以使用Dispatcher調用到UI線程

private void ThreadingTimerTick(object state)// or whatever your method is. 
{ 
    Dispatcher.Invoke(DispatcherPriority.Background, (Action)delegate() 
    { 
    // do stuff 
    }); 
}