gpt4 book ai didi

c# - Dispatcher.Invoke() 不适用于该应用程序

转载 作者:行者123 更新时间:2023-11-30 16:27:44 25 4
gpt4 key购买 nike

我正在从事我公司的一个项目,他们在其中使用了 Dispatcher.Invoke()在很多地方。如果我使用 BeginInvoke而不是调用 Synchronisation线程之间工作正常,但在 Invoke 的情况下,应用程序卡住,甚至不进入委托(delegate)方法的执行。有人知道为什么会这样吗?

任何答案将不胜感激。

Invoke 的示例代码在项目中使用:

Dispatcher.Invoke(DispatcherPriority.Send,
new DelegateMethod(MethodtoExecute));

private delegate void DelegateMethod();

void MethodtoExecute()
{
try
{

}
catch (Exception /*ex*/)
{

}
finally
{

}
}

最佳答案

Dispatcher.Invoke 在与您的应用程序相同的线程上同步执行,因此无论您调用什么都能够阻塞主应用程序线程。 Dispatcher.BeginInvoke 异步执行,因此在执行时不会占用主应用程序线程。

由于您正在使用 DispatcherPriority.Send,这是最高的调度程序优先级,无论您调用什么,都会先于其他任何事情运行,包括渲染屏幕或监听事件。我建议将其切换为 DispatcherPriority.Background,它的运行优先级低于 Render 和 Input。参见 this page DispatcherPriority 级别及其执行顺序的列表

我强烈建议您查看发布的答案 here

关于c# - Dispatcher.Invoke() 不适用于该应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7594879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com