在单独的线程中运行表单



假设我有一个表单Foo。我如何创建一个实例,其中运行在它自己的线程,并得到更新,即使主应用程序线程可能忙于做别的事情?例如,处理阻塞网络通信或类似的事情。

我理解的基础知识,我需要创建一个新的线程,创建该线程中的表单实例等。但是我想我需要一个线程/窗口的更新循环,我不确定它应该是什么样子

你不应该在你的应用程序主线程以外的线程中创建表单,因为windows消息队列只与这个主线程相关联。
换个角度思考:为了确保表单总是更新和响应,为繁忙的工作(如处理阻塞的网络通信等)创建单独的线程,而不是为表单创建线程。在这种情况下,在创建新线程之后,主窗体继续从它的队列中抽取消息,而其他线程中的函数正在做您需要的脏工作。当工作线程完成时,它可以使用PostMessage() WinAPI函数通知主线程结果。你只需要在表单中简单地为这些自定义消息提供处理程序,它们就可以无缝地与工作线程通信。此外,如果您的"繁忙工作"不是很复杂,您甚至可以在没有额外线程的情况下处理,方法是在表单线程中运行您的工作,并不时调用ProcessMessages()函数,以保持表单更新。

最新更新