0
我正在从wpf项目转移到我的winforms项目中。WinForm中的调度程序
我不知道如何将Dispatcher转换为winforms。
任何人都可以帮我吗?
void gm_MoveDownByThread()
{
this.Dispatcher.Invoke((Action)(() =>
{
KeyDownMethod(Key.Down);
}));
}
我正在从wpf项目转移到我的winforms项目中。WinForm中的调度程序
我不知道如何将Dispatcher转换为winforms。
任何人都可以帮我吗?
void gm_MoveDownByThread()
{
this.Dispatcher.Invoke((Action)(() =>
{
KeyDownMethod(Key.Down);
}));
}
如果你从UI线程中运行,那么下面的方法将是最普通的一个,并且都将在WPF和WinForms的工作:
SynchronizationContext.Current.Send(_ =>
{
//anything you wish.
}, null);
两者的WinForms和调度WPF调度程序是SynchronizationContext的实现,它将请求的操作排入UI线程队列。这样你就不会使用任何特定的东西。
如果您在UI线程之外运行代码,那么SynchronizationContext.Current将引用“默认”实现,而不是您要查找的实现(它不会在UI内运行操作线程,但只是在ThreadPool中)。所以,在这种情况下,如果你有任何UI控件的引用,你可以使用从Control
类继承的任何东西的BeginInvoke方法。
希望这会有所帮助。
看看[Control.Invoke](https://msdn.microsoft.com/en-us/library/zyzhdc6b(v = vs.110).aspx)。 – Clemens
另见例如https://stackoverflow.com/questions/13292628/dispatching-events-into-right-thread,https://stackoverflow.com/questions/18134822/how-do-i-convert-wpf-dispatcher-to-winforms,等等 –