Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在另一个线程上运行窗体_Vb.net_Multithreading_Thread Safety - Fatal编程技术网

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来避免此类陷阱。