gpt4 book ai didi

vb.net - 在vb.net中运行线程

转载 作者:行者123 更新时间:2023-12-03 13:18:10 24 4
gpt4 key购买 nike

我有一个正在运行单独线程的应用程序。

Dim thread As New System.Threading.Thread(AddressOf Main)
thread.Start()

但是,线程引用了一个名为Output的文本框,并且在执行时会产生以下错误:
System.InvalidOperationException was unhandled
Message="Cross-thread operation not valid: Control 'Output' accessed from a thread other than the thread it was created on."
Source="System.Windows.Forms"

(为空间而缩短的消息)

如何使操作在另一个线程上运行,但仍使用Output对象?我无法调用子例程来为我执行此操作,因为它会产生完全相同的错误。

顺便说一句,调用的方法是AppendText。

我可能在这里错过了一些重要的事情,因此感谢您的帮助!

最佳答案

不仅要调用AppendText方法,还需要强制它在正确的线程上执行。因此,如果您有这样的电话:

myTextBox.AppendText("some text")

...您需要将其更改为:
myTextBox.BeginInvoke(New Action(Of String)(AddressOf myTextBox.AppendText), "some text")

您可以使用 InvokeBeginInvoke。在这种情况下,由于 AppendText没有任何返回值,因此 BeginInvoke是一个不错的选择(不同之处在于 Invoke将阻塞当前线程,而GUI线程执行 AppendText方法,而 BeginInvoke将异步进行调用)。

关于vb.net - 在vb.net中运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418705/

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