wpf - Dispatcher.Run 与 Dispatcher.PushFrame

标签 wpf dispatcher

我有一个非 ui 线程,我需要在该线程上发送消息。

执行此操作的正常方法是在我的线程的线程过程中调用 Dispatcher.Run()

我想修改它以使其在处理未处理的异常方面更加健壮。

我的第一个剪辑是:

   for (;;)
    {
        var frame = new DispatcherFrame();
        try
        {
            Dispatcher.PushFrame(frame);
            break;
        }
        catch (Exception e)
        {
            frame.Continue = false;
            Log("ThreadProc caught exception:\n{0}", e);
        }
    }

此代码有效并允许调度程序在异常发生后继续发送消息。

有人知道这种方法有任何潜在问题吗?

最佳答案

我发现使用 dispatcherframe 在与 ui 线程一起使用时会产生一些问题 - 例如焦点问题 - 我认为你的场景会很好。

你试过用以下方法捕捉它吗:

Application.DispatcherUnhandledException

Dispatcher.UnhandledException

您也可以尝试并设置 Handled=true 以使其继续。

关于wpf - Dispatcher.Run 与 Dispatcher.PushFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5697667/

相关文章:

wpf - 将字符串列表作为复选框绑定(bind)到 UI?

wpf - 应用程序调度程序和控制调度程序

configuration - Akka::dispatcher [%name%] 未配置,使用默认调度程序

c# - 动态格式化的 TextBlock

窗口外的 WPF 装饰层

c# - 如何从外部为 UserControl 内的控件分配事件处理程序?

c - 如果我的编译器对函数指针的支持被破坏,我该如何编写一个调度程序?

c# - 为什么 DispatcherTimer 在某个随机时间后停止触发?

vb.net - .NET 创建新调度程序

c++ - 是否可以在 C++ 中创建方法调用调度程序?