【问题标题】:Dispatcher in WinForm [duplicate]WinForm中的调度程序[重复]
【发布时间】:2017-02-22 04:02:13
【问题描述】:

我正在将一个方法从 wpf 项目转移到我的 winforms 项目。

我不知道如何将 Dispatcher 转换为 winforms。

谁能帮帮我?

void gm_MoveDownByThread()
{
    this.Dispatcher.Invoke((Action)(() =>
    {
        KeyDownMethod(Key.Down);
    }));
}

【问题讨论】:

标签: c# wpf winforms dispatcher


【解决方案1】:

如果您从 UI 线程运行,那么以下方法将是最通用的方法,并且适用于 WPF 和 WinForms:

SynchronizationContext.Current.Send(_ =>
            {
                //anything you wish.
            }, null);

WinForms 调度程序和 WPF 调度程序都是 SynchronizationContext 的实现,它们将请求的操作排入 UI 线程队列。这样你就不会使用任何特定的东西。

如果您在 UI 线程之外运行代码,则 SynchronizationContext.Current 将引用不是您正在寻找的“默认”实现(它不会在 UI 线程内运行操作,但只是在线程池中)。因此,在这种情况下,如果您引用了任何 UI 控件,则可以使用继承自 Control 类的任何内容的 BeginInvoke 方法。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 2015-03-30
    • 2013-11-15
    • 2015-06-15
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多