我试图在我的程序中实现任务。我启动将生成日志文件的任务,之后,我想更新标签以说“日志成功保存”。更新任务中的标签
这里是我的代码
Private Function Createlog(ByVal mylist As List(Of classTest))
Dim sw As New StreamWriter("log_list.log")
For index = 1 To mylist.Count - 1
sw.WriteLine(mylist(index).comments)
Next
sw.Close()
Try
Me.Invoke(UpdateLabel("Log sucessfully saved"))
Catch ex As Exception
End Try
Return 1
End Function
Private Function UpdateLabel(ByVal text As String)
Label1.Text = text
Return 1
End Function
我启动从主窗体的任务负载():
Dim tasktest = Task(Of Integer).Factory.StartNew(Function() Createlog(theList))
(我不知道这是否是最好使用厂家或声明的任务,然后task.Start())
我对标签更新错误:
跨线程操作无效:从线程 以外的线程访问控制'Label1',而不是创建它的线程。
你能解释一下为什么它不能与invoke方法一起工作吗?你有其他解决方案吗?
感谢您的帮助
在你UpdateLabel方法,尝试设置它的文本之后刷新您的Label1。这将强制标签重新绘制。例如,label1.Refresh() – 2015-04-01 11:48:28
我不能因为当我更改label1.text时处理错误 – Romain 2015-04-01 12:13:43