0

我目前拥有的是主要形式,然后当用户按下按钮时,它会运行一些函数,这些函数会循环访问一些文件并更改它们,然后将它们复制到另一个位置,这些函数可能需要相当长的时间。我想要的是,当按下按钮时,它会打开另一个带有文本框的表单,当它完成循环的 1 个循环时,会向文本框输出一行并告诉用户天气是否已成功。

目前我有:

    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

虽然它运行表单只是闪烁了几次?

谢谢

4

1 回答 1

2

您应该将所有 UI 控件保留在 UI 线程上——包括整个Forms.

您可以在后台运行文件操作,并且仅在您要附加消息时才编组回 UI 线程。

BackgroundWorker 类在这里非常适合。

这里有一本很棒的免费电子书:Albahari

于 2012-04-28T13:01:36.760 回答