【问题标题】:How do you add Invoke methods to a custom control?如何将 Invoke 方法添加到自定义控件?
【发布时间】:2013-10-22 05:07:06
【问题描述】:

我有一个自定义控件进度条,我需要通过另一个线程进行更新。自定义控件似乎没有 Invoke、BeginInvoke、InvokeRequired 等可用,有没有人对如何实现这个有任何想法控制范围内?

【问题讨论】:

    标签: wpf controls invoke


    【解决方案1】:

    您需要查看Dispatcher.Invoke 方法来执行此操作。我有一个方便的方法可以为我包装这个功能:

    public object RunOnUiThread(Delegate method)
    {
        return Dispatcher.Invoke(DispatcherPriority.Normal, method);
    }
    

    我是这样使用的:

    UiThreadManager.RunOnUiThread((Action)delegate
    {
        // This code will run on the UI thread
    });
    

    请注意,您需要使用来自 UI 线程的正确 Dispatcher 对象,而不是在非 UI 线程上创建的对象。请查看 MSDN 上的 Dispatcher.Invoke Method 页面了解更多信息。

    如果这不是你想要的,请告诉我。

    【讨论】:

    • 嗨,Sheridan,这很接近,我想包装它们,以便它们保留与其他控件上看到的相同的调用签名,所以也许?公共对象调用(委托方法){ 返回 Dispatcher.Invoke(DispatcherPriority.Normal,方法);但是我将如何以相同的方式包装 RequiresInvoke?
    • 抱歉,这是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    相关资源
    最近更新 更多