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接口以用于此用途? –