我想在VB.Net中建立一个日志解析器,它将采用IIS日志并将它们插入到数据库中。从来没有真正做出完整的桌面应用程序,我遇到了一些绊脚石,所以请原谅我,如果我的问题非常不了解;我正在学习跑步时走路。VB.Net - 从后台工作人员更新进度栏
说我看起来与工作像这样的代码:
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim logfile = "C:\ex111124.log"
Dim FileLength As Long = New System.IO.FileInfo(logfile).Length
logFileLabel.Text = logfile
Dim objReader As New System.IO.StreamReader(logfile)
Do While objReader.Peek() <> -1
OngoingLog.AppendText(objReader.ReadLine)
'BackgroundWorker1.ReportProgress(e.percentProgress)
Loop()
objReader.Close()
objReader = Nothing
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
'Me.crunchingProgress.Value = e.ProgressPercentage
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Close()
End Sub
所以功能工作,打开这个窗口,当它开始读取日志文件,并与所有当前行的更新一个文本框阅读,但我也希望它在我的主线程中更新一个名为crunchingProgress的进度条。
任何帮助将不胜感激。
谢谢,这个工作伴随着加入一些调用委派线程安全的潜艇其他控制更新 – 2013-03-11 19:38:57
你并不需要调用调用一个ProgressChanged事件。它在调用RunWorkerAsync的同一线程中触发(通常是UI线程)。 http://stackoverflow.com/questions/1968222/backgroundworker-still-needs-to-call-invoke – Steve 2013-03-11 19:53:11