我正在从wpf项目转移到winforms项目的方法。
我不知道如何将Dispatcher转换为winforms。
任何人都可以帮助我吗?
void gm_MoveDownByThread()
{
this.Dispatcher.Invoke((Action)(() =>
{
KeyDownMethod(Key.Down);
}));
}
答案 0 :(得分:0)
如果您从UI线程运行,那么以下方法将是最通用的方法,并且在WPF和WinForms中都可以使用:
SynchronizationContext.Current.Send(_ =>
{
//anything you wish.
}, null);
WinForms调度程序和WPF调度程序都是SynchronizationContext的实现,它将请求的操作排入UI线程队列。这样你就不会使用任何具体的东西了。
如果您在UI线程之外运行代码,那么SynchronizationContext.Current将引用"默认"实现并不是你正在寻找的东西(它不会在UI线程内部运行,而只是在ThreadPool中运行)。因此,在这种情况下,如果您有任何UI控件的引用,则可以使用继承自Control
类的任何内容的BeginInvoke方法。
希望这有帮助。