Dispatcher.Invoke在WordAddin中挂起

句法

我已经写了一个WordAddIn,它允许用户调用当前文档的某些元数据。通过功能区中的自定义按钮,他们可以调用WPF。WPF调用实现如下:

        System.Windows.Application app = null;

然后在按钮调用的方法中:

if (app == null)
{
    app = new System.Windows.Application { ShutdownMode = ShutdownMode.OnExplicitShutdown };
    app.Run();
}
MainWindow win = new MainWindow(graph);
app.Dispatcher.Invoke((Action)(() => { win.Show(); }));

Word启动后第一次单击该按钮时,没有任何反应,并且无法编辑Word文档中的内容。第二次单击该按钮并显示WPF对象,这对于以后的任何按钮单击也适用。因此,似乎是第一次调用调度程序时,它挂起了。我该如何预防?

句法

我在Microsoft WPF论坛中获得了有关此方面的帮助。在新线程中创建和调用app可以解决问题,因为app确实确实阻止了当前被调用的线程。

                    if (app == null)
                    {
                        Thread thread = new Thread(new ThreadStart(() =>
                            {
                                app = new System.Windows.Application { ShutdownMode = ShutdownMode.OnExplicitShutdown };
                                autoResetEvent.Set();
                                app.Run();
                            }));
                        thread.SetApartmentState(ApartmentState.STA);
                        thread.Start();
                    }
                    else 
                    {
                        autoResetEvent.Set();
                    }
                    autoResetEvent.WaitOne(); //wait until app has been initialized on the other thread
                    app.Dispatcher.Invoke((Action)(() => { new MainWindow(graph).Show(); }));                       
                    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

DoEvents:Dispatcher.Invoke与PushFrame

来自分类Dev

Dispatcher Invoke(...)vs BeginInvoke(...)的困惑

来自分类Dev

我应该使用dispatcher.Invoke(...)还是ObserveOn(dispatcher)?

来自分类Dev

Dispatcher.CurrentDispatcher 导致 ReactiveUI 调用挂起

来自分类Dev

在Dispatcher.Invoke中传递两个参数

来自分类Dev

Dispatcher.Invoke和传播错误

来自分类Dev

App在Dispatcher.Invoke之后冻结

来自分类Dev

编写Dispatcher.Invoke VB.NET

来自分类Dev

C#Dispatcher.Invoke不起作用

来自分类Dev

F#Async.SwitchToContext与Dispatcher.Invoke

来自分类Dev

Control.Dispatcher.BeginInvoke()和Control.Dispatcher.Invoke()命令执行令人困惑吗?

来自分类Dev

Application.Current.Dispatcher.BeginInvoke(action) VS。Application.Current.Dispatcher.Invoke(action) (WPF)

来自分类Dev

WPF中Dispatcher计时器的性能

来自分类Dev

在 UWP 应用中处理 Dispatcher 异常

来自分类Dev

Parallel.Invoke 和 Dispatcher.Invoke 之间的死锁

来自分类Dev

禁止在WPF代码中使用Dispatcher.Invoke

来自分类Dev

Dispatcher.Invoke是否在调用线程上阻塞?

来自分类Dev

两次调用Dispatcher.Invoke()时出现死锁

来自分类Dev

在Powershell中将Dispatcher Invoke与运行空间一起使用

来自分类Dev

禁止在WPF代码中使用Dispatcher.Invoke

来自分类Dev

两次调用Dispatcher.Invoke()时出现死锁

来自分类Dev

如何在.NET Core 3类库中运行Dispatcher.Invoke()?

来自分类Dev

Dispatcher是可以在C#中传递的对象吗?

来自分类Dev

IntelliJ不断从akka教程中删除context.dispatcher的导入

来自分类Dev

如何在React Native中要求flux Dispatcher

来自分类Dev

Dispatcher 只从数组中绘制最后一个对象

来自分类Dev

UWP 中 Dispatcher.RunAsync 和 ThreadPool.RunAsync 的区别

来自分类Dev

在 WPF 应用程序中调用 Application.Current.Dispatcher.Invoke 时将 try-catch 放在哪里

来自分类Dev

Dispatcher.Invoke在应用程序闲置时单击按钮-我的UI是否冻结/阻止

Related 相关文章

  1. 1

    DoEvents:Dispatcher.Invoke与PushFrame

  2. 2

    Dispatcher Invoke(...)vs BeginInvoke(...)的困惑

  3. 3

    我应该使用dispatcher.Invoke(...)还是ObserveOn(dispatcher)?

  4. 4

    Dispatcher.CurrentDispatcher 导致 ReactiveUI 调用挂起

  5. 5

    在Dispatcher.Invoke中传递两个参数

  6. 6

    Dispatcher.Invoke和传播错误

  7. 7

    App在Dispatcher.Invoke之后冻结

  8. 8

    编写Dispatcher.Invoke VB.NET

  9. 9

    C#Dispatcher.Invoke不起作用

  10. 10

    F#Async.SwitchToContext与Dispatcher.Invoke

  11. 11

    Control.Dispatcher.BeginInvoke()和Control.Dispatcher.Invoke()命令执行令人困惑吗?

  12. 12

    Application.Current.Dispatcher.BeginInvoke(action) VS。Application.Current.Dispatcher.Invoke(action) (WPF)

  13. 13

    WPF中Dispatcher计时器的性能

  14. 14

    在 UWP 应用中处理 Dispatcher 异常

  15. 15

    Parallel.Invoke 和 Dispatcher.Invoke 之间的死锁

  16. 16

    禁止在WPF代码中使用Dispatcher.Invoke

  17. 17

    Dispatcher.Invoke是否在调用线程上阻塞?

  18. 18

    两次调用Dispatcher.Invoke()时出现死锁

  19. 19

    在Powershell中将Dispatcher Invoke与运行空间一起使用

  20. 20

    禁止在WPF代码中使用Dispatcher.Invoke

  21. 21

    两次调用Dispatcher.Invoke()时出现死锁

  22. 22

    如何在.NET Core 3类库中运行Dispatcher.Invoke()?

  23. 23

    Dispatcher是可以在C#中传递的对象吗?

  24. 24

    IntelliJ不断从akka教程中删除context.dispatcher的导入

  25. 25

    如何在React Native中要求flux Dispatcher

  26. 26

    Dispatcher 只从数组中绘制最后一个对象

  27. 27

    UWP 中 Dispatcher.RunAsync 和 ThreadPool.RunAsync 的区别

  28. 28

    在 WPF 应用程序中调用 Application.Current.Dispatcher.Invoke 时将 try-catch 放在哪里

  29. 29

    Dispatcher.Invoke在应用程序闲置时单击按钮-我的UI是否冻结/阻止

热门标签

归档