我知道关于这个问题有很多问题,也有很多答案,但是我读了好几天,所以找不到解决我问题的方法。我还应该提到我是这方面的初学者。
首先,我想在文字上解释我的vb.net程序做什么:
- 使用按钮启动我的应用程序后,我在MainForm上启动状态监视文件的文件监视程序,并启动了一个用于计算测试数据的新线程。
- 此线程启动一个类,并且在该类中也启动一个文件监视程序。
- 在受监视的文件夹中创建testdata时,线程将分析我的数据并将其写入数据库。
- 在计算过程中,写入数据库后,任务会将一些状态消息写入状态消息文件。
- 状态消息的内容应显示在文本框内的MainForm上,并且在写入新状态时应始终更新,以便最新状态始终位于文本框的顶部。进度也必须报告给MainForm,以便用进度条显示。
- 只要我的文件夹中有新的testdata,就重复一次,换句话说,我的应用程序是一个“数据吸尘器”,它从受监视的目录中吸取所有数据,以便进行分析并将其写入数据库。如果分析了文件夹中的所有数据并将其写入数据库,它将等待新数据,并且在Filewatcher触发新事件后,任务将再次开始分析和写入。因此,当我有新数据时,我不会总是启动任务。仅当我启动我的应用程序时,任务才会启动。其余的工作由此任务中的filewatcher事件完成。
我无法执行此操作,因为无法从此线程修改GUI。我还要提到,该线程的代码在另一个类中。
这是我在主表单上的代码:
Private Async Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
Await Task.Run(Sub() gFileWatcher.InitWatcher())
End Sub
状态更改后,如何实时刷新文本框?