ILYA20
چهارشنبه 10 آبان 1396, 19:48 عصر
با سلام و درود خدمت دوستان
ما از یک backgroudworker استفاده میکنیم و میخواهیم از شروع تا پایان پروسه progressbar کار کنه (میزان پیشرفت کار رو نمایش بده) و همینطور مشکل در کنسل کردن backgroudworker داریم و کنسل کار نمیکنه
دستورات استفاده شده توسط ما :
Private Sub UnpackSystem_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles UnpackSystem.DoWork
For i = 0 To 100
If UnpackSystem.CancellationPending = True Then
e.Cancel = True
Exit For
Else
unpacked()
UnpackSystem.ReportProgress(i)
End If
Next
End Sub
Private Sub UnpackSystem_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles UnpackSystem.ProgressChanged
ProgressBar5.Value = e.ProgressPercentage
End Sub
Private Sub UnpackSystem_Completed(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles UnpackSystem.RunWorkerCompleted
If e.Cancelled = True Then
TextBox8.AppendText(Environment.NewLine & "Proccess Canceled")
ProgressBar5.Value = 0
ElseIf e.Error IsNot Nothing Then
TextBox8.AppendText(Environment.NewLine & "Error Progceess")
Else
TextBox8.AppendText(Environment.NewLine & "Task Complete")
End If
End Sub
Private Sub unpacked()
Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("cmd.exe", "/c apktool d framework-res.apk")
oStartInfo.WindowStyle = ProcessWindowStyle.Hidden
oStartInfo.CreateNoWindow = True
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
TextBox8.Invoke(Sub() TextBox8.AppendText(Environment.NewLine & sOutput))
End Sub
Private Sub BtnCancell_Click(sender As Object, e As EventArgs) Handles BtnCancell.Click
If UnpackSystem.WorkerSupportsCancellation = True Then
UnpackSystem.CancelAsync()
End If
End Sub
End Class
مشکل در کجای کار ماست
راهنمایی لطفا
ما از یک backgroudworker استفاده میکنیم و میخواهیم از شروع تا پایان پروسه progressbar کار کنه (میزان پیشرفت کار رو نمایش بده) و همینطور مشکل در کنسل کردن backgroudworker داریم و کنسل کار نمیکنه
دستورات استفاده شده توسط ما :
Private Sub UnpackSystem_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles UnpackSystem.DoWork
For i = 0 To 100
If UnpackSystem.CancellationPending = True Then
e.Cancel = True
Exit For
Else
unpacked()
UnpackSystem.ReportProgress(i)
End If
Next
End Sub
Private Sub UnpackSystem_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles UnpackSystem.ProgressChanged
ProgressBar5.Value = e.ProgressPercentage
End Sub
Private Sub UnpackSystem_Completed(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles UnpackSystem.RunWorkerCompleted
If e.Cancelled = True Then
TextBox8.AppendText(Environment.NewLine & "Proccess Canceled")
ProgressBar5.Value = 0
ElseIf e.Error IsNot Nothing Then
TextBox8.AppendText(Environment.NewLine & "Error Progceess")
Else
TextBox8.AppendText(Environment.NewLine & "Task Complete")
End If
End Sub
Private Sub unpacked()
Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("cmd.exe", "/c apktool d framework-res.apk")
oStartInfo.WindowStyle = ProcessWindowStyle.Hidden
oStartInfo.CreateNoWindow = True
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
TextBox8.Invoke(Sub() TextBox8.AppendText(Environment.NewLine & sOutput))
End Sub
Private Sub BtnCancell_Click(sender As Object, e As EventArgs) Handles BtnCancell.Click
If UnpackSystem.WorkerSupportsCancellation = True Then
UnpackSystem.CancelAsync()
End If
End Sub
End Class
مشکل در کجای کار ماست
راهنمایی لطفا