当前位置: 首页 > 知识库问答 >
问题:

工作线程中的MessageBox

乐正锦
2023-03-14

我有一个应用程序调用插件DLL。其中一些调用是从辅助线程(即,不是UI线程)执行的,并且可能会弹出一个带有MessageBox的对话框。根据这个(http://www.codeproject.com/articles/121226/messagebox-and-worker-threads),有效的UI线程被切换到调用MessageBox的线程。这会使应用程序“崩溃”,因为消息泵停止接收消息。有什么方法可以将UI线程切换回正确的线程吗?有什么办法吗?

共有1个答案

邵诚
2023-03-14

罪魁祸首是AttachThreadInput,请参见此消息。

 类似资料:
  • 主线程通常被用于运行主循环,而主循环负责的都是 UI 相关的工作,所以也可以说主线程是 UI 线程。为了不影响 UI 线程的工作效率,我们会需要创建额外的线程来负责各种各样的工作,而这些线程就是工作线程。 在主循环的章节中,我们已经了解到主循环执行频率影响界面的流畅度,它的每一次循环都会按顺序执行处理定时器、处理事件队列、更新组件、渲染组件等任务,其中最容易影响到主循环的执行频率的任务是处理事件队

  • 问题内容: 在http://marcio.io/2015/07/handling-1-million-requests-per-minute-with- golang/ 提供的示例中,很多地方都引用了该示例。 分派服务完许多工作后,工人池(chan chan工作)会不会耗尽?因为从信道和信道工作拉出第一类型后没有被补充被调用的第一次?还是我想念/误读了什么?如何为WorkerPool补充可用的工作

  • 问题内容: 我试图弄清楚如何移植要使用的线程程序。我有很多代码可以围绕几个标准库进行同步,基本上是这样的: 一个线程创建值(可能是用户输入),而另一个线程对它们执行某些操作。关键是这些线程在出现新数据之前一直处于空闲状态,此时它们将唤醒并对其进行处理。 我正在尝试使用asyncio实现此模式,但是我似乎无法弄清楚如何使其“运行”。 我的尝试或多或少看起来像这样(根本不做任何事情)。 我尝试过使用协

  • 根据我的理解,ThreadpoolExecitor有两个主要的数据结构(工人,workQueue)用于管理tasks.worker(Set)有线程,这些线程将一直运行到执行器关闭,workerQueue将所有任务保留到执行器。但是根据代码,我没有看到所有任务都被添加到workQ中ueue.task仅在第1361行添加到队列中,不会在每种情况下都执行。

  • 我有4-5个工作线程处理大型消息队列。我还有另一段代码,它使用2-3个worker运行。我想在处理大型消息队列时阻止所有其他工作者。 我正在使用JDK6和Jms 编辑: 队列进程工作者从未终止。当没有消息时,它们阻塞队列。这些工作者由执行器线程池管理,如果我使用读写锁,其中一个工作者也会被阻塞。此外,如果使用循环屏障,那么我必须终止线程,以便重新传递阻塞的第二个进程。由于工作者是由线程池管理的,所

  • 我是vert. x平台的新手。我的项目中有一个标准和一个工作人员垂直层,它们通过eventBus进行通信。工作人员垂直层在循环和数据库访问中执行多个REST API调用。 我的问题是工人垂直完成任务在一些运行没有问题,但有时它抛出以下错误。 我正在使用科特林协程来处理函数,该函数执行大多数REST API调用和数据库访问。 有人能告诉我上述问题的原因吗?还有没有任何方法可以改进<code>cons