gpt4 book ai didi

vb.net - 如何在单独的线程上在VB项目中运行表单,同时仍然能够进行通信

转载 作者:行者123 更新时间:2023-12-03 12:52:36 25 4
gpt4 key购买 nike

我已经在这个问题上困扰了很长时间了。我有一个VB.Net项目,其中有几种形式。但是,如果其中一种形式冻结或崩溃,则整个应用程序将崩溃。我一直无法找到一种方法,当显示每个表单时,它要么处于单独的进程中,要么处于新线程中,并且仍能够保持与其他表单进行通信的能力,就好像它位于主表单上一样。 UI线程。我迫切需要找到一种方法来执行此操作,但是每次我使用新表单创建新线程时,该表单都会立即关闭。这有可能吗?

最佳答案

您应该知道两件事。

尽管完全有可能在两个单独的线程上运行两个单独的表单,但这是一个糟糕的设计(除非您真的知道自己在做什么)。如果要在单独的线程上创建表单,则还负责在该线程上创建消息循环(否则,表单将冻结)。

具体来说,您可以使用Application.Run完成此操作

    _thread = New Thread(Sub()
Using frm As New SomeForm
Application.Run(frm)
End Using
End Sub)
_thread.Start()

不同线程上的表单之间的通信与普通线程和表单之间的通信没有什么不同。您可以使用一个消息的 ConcurrentQueue,一个线程在其中写入指令以供另一线程读取,或者使用简单的共享变量。您必须确保每个线程仅更改其创建的表单的组件或控件。要在线程之间操纵控件,必须使用 Invoke

关于vb.net - 如何在单独的线程上在VB项目中运行表单,同时仍然能够进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481930/

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