2012-12-09 27 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 
    }); 
}