Vb.net 在另一个线程上运行窗体
我现在拥有的主要形式是,当用户按下一个按钮时,它运行一些函数,在一些文件中循环并更改它们,然后将它们复制到另一个位置。这些函数可能需要相当长的时间。我想要的是,当按下按钮时,它会打开另一个表单,表单上有一个文本框,当它完成一个循环时,它会向文本框输出一行内容,并告诉用户天气是否成功 目前我有:Vb.net 在另一个线程上运行窗体,vb.net,multithreading,thread-safety,Vb.net,Multithreading,Thread Safety,我现在拥有的主要形式是,当用户按下一个按钮时,它运行一些函数,在一些文件中循环并更改它们,然后将它们复制到另一个位置。这些函数可能需要相当长的时间。我想要的是,当按下按钮时,它会打开另一个表单,表单上有一个文本框,当它完成一个循环时,它会向文本框输出一行内容,并告诉用户天气是否成功 目前我有: Dim t As Threading.Thread t = New Threading.Thread(AddressOf Form3.Show) t.Start() 当循环结束时
Dim t As Threading.Thread
t = New Threading.Thread(AddressOf Form3.Show)
t.Start()
当循环结束时,只需在文本框中添加一些文本:
for each x in list
'copy some files
Form3.RichTextBox1.AppendText("Cycle 1 compleate")
loop
当它运行时,表单只会闪烁几次
谢谢您应该在UI线程上保留所有UI控件-包括整个
表单
您可以在后台运行文件操作,并且只有在希望附加消息时才封送回UI线程
这件衣服很适合这里
这里有一本优秀的免费电子书:。使用“Form3”,类型名称在线程中不起作用。发布的代码创建了一个新表单,它不可见。使用BackgroundWorker来避免此类陷阱。