21-06-17, 12:15 AM
الصفحات : 1 2
22-06-17, 03:51 AM
ضع لنفسك شرطا أو مجموعة شروط عبارة عن Boolean إن تحققت استخدم Exit Sub تخرج بها من الروتين ٍالذي ينتمي الي BackgroundWorker
وهذا مرتبط بنوعية الوظيفة التي يقوم بها BackgroundWorker
وهذا مرتبط بنوعية الوظيفة التي يقوم بها BackgroundWorker
22-06-17, 04:32 AM
(22-06-17, 03:51 AM)silverlight كتب : [ -> ]ضع لنفسك شرطا أو مجموعة شروط عبارة عن Boolean إن تحققت استخدم Exit Sub تخرج بها من الروتين ٍالذي ينتمي الي BackgroundWorker
وهذا مرتبط بنوعية الوظيفة التي يقوم بها BackgroundWorker
لو تكرمت اخي ان توضح لي بمثال اذكان بالامكان
او اضع الكود خاصتي و تعدل عليه
22-06-17, 05:39 AM
هذا الكود احب ان اعمل بوتن ثاني لايقاف عمله
Private Sub backwork_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles backwork.DoWork
Try
Dim sourceLines() As String = IO.File.ReadAllLines(ALLWGS)
' header ------------------------------
Me.StatusLabel.Text = "header Traitement..."
Dim header(21 - 1) As String
Array.Copy(sourceLines, 0, header, 0, 21)
Me.StatusLabel.Text = "header completed"
' details -----------------------------
Me.StatusLabel.Text = "details Traitement..."
Dim details(sourceLines.Count - 21 - 1) As String
Array.Copy(sourceLines, 21, details, 0, sourceLines.Count - 21)
For i = 0 To details.Length - 1
details(i) = details(i).Substring(21, 4) & " - " & details(i)
Next
Array.Sort(details)
For i = 0 To details.Length - 1
details(i) = details(i).Substring(7)
Next
Me.StatusLabel.Text = "header completed"
'splitfiles ---------------------------------------------
swat_star_to_end()
Dim bloc_of_swat As New List(Of String)()
Dim files() As String = IO.File.ReadAllLines(STATISTIQUE)
For i As Integer = indax_sw_star.Text To indax_sw_end.Text
bloc_of_swat.Add(files(i))
Next
For Each f As String In bloc_of_swat
If f.Trim <> "" Then
Dim filename As String = f.Substring(0, 5)
Me.StatusLabel.Text = filename & " Traitement..."
Dim flagStart As Integer = Val(f.Substring(6, 4))
Dim flagEnd As Integer = Val(f.Substring(11, 4))
Dim flagCount As Integer = Val(f.Substring(16))
Dim range = Enumerable.Range(flagStart, flagEnd - flagStart + 1)
Dim RegexPattern As String = "^\w(\d{3})\s\s\s\s\s\s\s\s\s\s\s\s\s(\d{4})(" & String.Join("|", range) & ")\s.+"
Dim ms As MatchCollection = Regex.Matches(String.Join(vbNewLine, details), RegexPattern, RegexOptions.Multiline)
Dim resultLines = (From x As Match In ms Select x.Value).ToArray
If flagCount <> ms.Count Then
ListBox1.Items.Add(filename)
End If
Dim lines() As String = IO.File.ReadAllLines("header.HDR")
Dim resultFile As String = String.Empty
If lines.Length < 20 Then
MsgBox("header lines infirieur a 20 vrifier votre heder")
Me.StatusLabel.Text = "Erreur au niveau de header taille."
Else
For i = 0 To 19
resultFile &= lines(i) & vbNewLine
Next
resultFile &= "" & vbNewLine
resultFile &= String.Join(vbNewLine, resultLines) & vbNewLine
IO.File.WriteAllText(filename & ".wgs", resultFile)
Me.StatusLabel.Text = filename & " completed"
Me.StatusLabel.Text = "Tout les Swat calculent avec succès."
If Me.StatusLabel.Text = "Tout les Swat calculent avec succès." Then
sw_star.Visible = False
sw_end.Visible = False
End If
End If
End If
Next
Catch ex As Exception
Me.StatusLabel.Text = "Errer."
MsgBox(ex.Message)
End Try
StatusProgressBar.Visible = False
Me.Button1.Enabled = True
Me.Button2.Enabled = True
Me.TextBox1.Enabled = True
Me.TextBox2.Enabled = True
Me.TextBox3.Enabled = True
Me.TextBox4.Enabled = True
End Sub
Private Sub backwork_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles backwork.DoWork
Try
Dim sourceLines() As String = IO.File.ReadAllLines(ALLWGS)
' header ------------------------------
Me.StatusLabel.Text = "header Traitement..."
Dim header(21 - 1) As String
Array.Copy(sourceLines, 0, header, 0, 21)
Me.StatusLabel.Text = "header completed"
' details -----------------------------
Me.StatusLabel.Text = "details Traitement..."
Dim details(sourceLines.Count - 21 - 1) As String
Array.Copy(sourceLines, 21, details, 0, sourceLines.Count - 21)
For i = 0 To details.Length - 1
details(i) = details(i).Substring(21, 4) & " - " & details(i)
Next
Array.Sort(details)
For i = 0 To details.Length - 1
details(i) = details(i).Substring(7)
Next
Me.StatusLabel.Text = "header completed"
'splitfiles ---------------------------------------------
swat_star_to_end()
Dim bloc_of_swat As New List(Of String)()
Dim files() As String = IO.File.ReadAllLines(STATISTIQUE)
For i As Integer = indax_sw_star.Text To indax_sw_end.Text
bloc_of_swat.Add(files(i))
Next
For Each f As String In bloc_of_swat
If f.Trim <> "" Then
Dim filename As String = f.Substring(0, 5)
Me.StatusLabel.Text = filename & " Traitement..."
Dim flagStart As Integer = Val(f.Substring(6, 4))
Dim flagEnd As Integer = Val(f.Substring(11, 4))
Dim flagCount As Integer = Val(f.Substring(16))
Dim range = Enumerable.Range(flagStart, flagEnd - flagStart + 1)
Dim RegexPattern As String = "^\w(\d{3})\s\s\s\s\s\s\s\s\s\s\s\s\s(\d{4})(" & String.Join("|", range) & ")\s.+"
Dim ms As MatchCollection = Regex.Matches(String.Join(vbNewLine, details), RegexPattern, RegexOptions.Multiline)
Dim resultLines = (From x As Match In ms Select x.Value).ToArray
If flagCount <> ms.Count Then
ListBox1.Items.Add(filename)
End If
Dim lines() As String = IO.File.ReadAllLines("header.HDR")
Dim resultFile As String = String.Empty
If lines.Length < 20 Then
MsgBox("header lines infirieur a 20 vrifier votre heder")
Me.StatusLabel.Text = "Erreur au niveau de header taille."
Else
For i = 0 To 19
resultFile &= lines(i) & vbNewLine
Next
resultFile &= "" & vbNewLine
resultFile &= String.Join(vbNewLine, resultLines) & vbNewLine
IO.File.WriteAllText(filename & ".wgs", resultFile)
Me.StatusLabel.Text = filename & " completed"
Me.StatusLabel.Text = "Tout les Swat calculent avec succès."
If Me.StatusLabel.Text = "Tout les Swat calculent avec succès." Then
sw_star.Visible = False
sw_end.Visible = False
End If
End If
End If
Next
Catch ex As Exception
Me.StatusLabel.Text = "Errer."
MsgBox(ex.Message)
End Try
StatusProgressBar.Visible = False
Me.Button1.Enabled = True
Me.Button2.Enabled = True
Me.TextBox1.Enabled = True
Me.TextBox2.Enabled = True
Me.TextBox3.Enabled = True
Me.TextBox4.Enabled = True
End Sub
22-06-17, 05:52 AM
هل تقصد ايقاف وتجاهل كافة التغييرات؟
يعني لو تم تشغيله يبدا كما انه اول مرة؟
بكل الاحوال لا تنسى تضبط الاعدادات كما تشاهد بالصورة
لو جوابك نعم
يعني لو تم تشغيله يبدا كما انه اول مرة؟
بكل الاحوال لا تنسى تضبط الاعدادات كما تشاهد بالصورة
لو جوابك نعم
PHP كود :
Public Class Form1
Private Sub lbl(ByVal l As String)
If Label1.InvokeRequired Then
Label1.Invoke(New Action(Of String)(AddressOf lbl), l)
Else
Label1.Text = l
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If b.IsBusy = False Then
b.RunWorkerAsync()
End If
End Sub
Private Sub b_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles b.DoWork
If b.CancellationPending = False Then
For r = 0 To 1000
If b.CancellationPending = False Then
Threading.Thread.Sleep(500)
lbl(r)
End If
Next
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
b.CancelAsync()
End Sub
End Class
22-06-17, 06:40 AM
حتى يتضح المطلوب اكثر طلبي هو الشطر الثاني من موضوع كنت ظرحته سابقا على المنتدى زالذي يحمل عنوان مساعدة في عمل برنامجمساعدة في عمل برنامج
وكانت الاجابة الوافية والشافية من الاخ [b]السرور [/b]جزاه الله الف عبر كود يحوي BackgroundWorker ولاني مبتدى في البرمجة لم افهم التعامل مع BackgroundWorker
وانا حاليا اريد ان اعمل زر يجعل BackgroundWorker يتوقف
هذا الطرح لابراز الاشكال و ليكون الكود الذي اعمل عليه مفهوم
ارجو منكم زيارة الموضوع مساعدتي بكود لايقاف BackgroundWorker
الموضوع على الرابط التالي بالمنتدى
http://vb4arb.com/vb/showthread.php?tid=18127
وكانت الاجابة الوافية والشافية من الاخ [b]السرور [/b]جزاه الله الف عبر كود يحوي BackgroundWorker ولاني مبتدى في البرمجة لم افهم التعامل مع BackgroundWorker
وانا حاليا اريد ان اعمل زر يجعل BackgroundWorker يتوقف
هذا الطرح لابراز الاشكال و ليكون الكود الذي اعمل عليه مفهوم
ارجو منكم زيارة الموضوع مساعدتي بكود لايقاف BackgroundWorker
الموضوع على الرابط التالي بالمنتدى
http://vb4arb.com/vb/showthread.php?tid=18127
22-06-17, 06:44 AM
إقتباس :مساعدة في عمل برنامجمهذا الموضوع عن انشاء bgw وقت التشغيل ومشاركتي عنها وقت التصميم جرب طريقتنا وستلاحظ ان الامر سهل.
واذا كنت فقط تريدها تحديدا اخبرنا عن اخر نقطة تود الانطلاق منها.
22-06-17, 06:59 AM
الأخ Rabeh
backgroundworker من عائلة Threading
وهو لكي يعمل يحتاج الي تايمر لذلك ستجد ان مشكلتك هي ايقاف التايمر
دعني اوضح لك الأمر بمثال بسيط جدا مختلف عن Backgroundworker
و لكنه مشابه تماما لما يقوم به Backgroundworker
لنفترض جدلا انك تريد تغيير خلفية لون الفورم الي اللون الأسود مثلا وذلك من خلال تايمر
انت هنا تقوم بإضافة التايمر ثم تقوم بتشغيله ومن خلاله تقوم بتغيير لون خلفية الفورم بأي لون تحدده
لكن حينما تريد ان تلغي العملية بعد تنفيذها هنا عليك ان تقوم بإيقاف التايمر و تعيد كل شئ الي طبيعته الاصلية
لو فكرت في الأمر قليلا ستكتشف انك تستطيع الاستغناء عن backgroundworker تماما و تستبدله بتايمر و اعتقد سكون اسهل لك التعامل مع التايمر
الكود التالي ه تنفيذ عملي لما قلته لك
افتح مشروع اضف له 2 باتون احدهما سيتكفل بتشغل التايمر و الاخر سيقوم بإيقاف التايمر
اخيرا في الحدث ForrmClosing عليك بعمل Dispsoe للتايمر و لقد كتبت لك شكل الروتين Dispose في الكود اعلاه
او ممكن بدلا من استخدام تايمر بهذا الاسلوب
تستطيع ان تضيف تايمر عادي بلا منه للفورم
backgroundworker من عائلة Threading
وهو لكي يعمل يحتاج الي تايمر لذلك ستجد ان مشكلتك هي ايقاف التايمر
دعني اوضح لك الأمر بمثال بسيط جدا مختلف عن Backgroundworker
و لكنه مشابه تماما لما يقوم به Backgroundworker
لنفترض جدلا انك تريد تغيير خلفية لون الفورم الي اللون الأسود مثلا وذلك من خلال تايمر
انت هنا تقوم بإضافة التايمر ثم تقوم بتشغيله ومن خلاله تقوم بتغيير لون خلفية الفورم بأي لون تحدده
لكن حينما تريد ان تلغي العملية بعد تنفيذها هنا عليك ان تقوم بإيقاف التايمر و تعيد كل شئ الي طبيعته الاصلية
لو فكرت في الأمر قليلا ستكتشف انك تستطيع الاستغناء عن backgroundworker تماما و تستبدله بتايمر و اعتقد سكون اسهل لك التعامل مع التايمر
الكود التالي ه تنفيذ عملي لما قلته لك
افتح مشروع اضف له 2 باتون احدهما سيتكفل بتشغل التايمر و الاخر سيقوم بإيقاف التايمر
PHP كود :
Public Class Form1
Private clock As Timer = New Timer
Private clr As Color = Color.Black
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
StopAction()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DoAction(Me)
End Sub
Private Sub DoAction(ctrl As Control, criteria As Boolean)
If criteria Then
clock.Enabled = True
clock.Start()
AddHandler clock.Tick, AddressOf Clock_Action
End If
End Sub
Private Sub DoAction(ctrl As Control)
DoAction(ctrl, true)
End Sub
Private Sub Clock_Action(sender As Object, e As EventArgs)
Me.BackColor = clr
End Sub
Private Sub StopAction()
clock.Stop()
clock.Enabled = False
Me.clr = Color.Black
Me.BackColor = SystemColors.Control
End Sub
Private Sub DisposeClock()
If clock.Enabled = True Then
clock.Enabled = False
End If
clock.Stop()
RemoveHandler clock.Tick, AddressOf Clock_Action
If clock IsNot Nothing Then
clock.Dispose()
clock = Nothing
End If
End Sub
End Class
اخيرا في الحدث ForrmClosing عليك بعمل Dispsoe للتايمر و لقد كتبت لك شكل الروتين Dispose في الكود اعلاه
او ممكن بدلا من استخدام تايمر بهذا الاسلوب
تستطيع ان تضيف تايمر عادي بلا منه للفورم
22-06-17, 12:00 PM
شكرا لك اخي [b] silverlight انت والاخ سعود لقد جربت كل اقتراحتكما ولكن لم تنفع[/b]
[b] الخلال ليس في افكاركما حاشا لله انتما مشكورين على الجهد بل الخلال في تطبيقي انا للاكواد لم اعرف التعامل معها لكوني مبتدى في البرمجة اضافة الى ذلك تصادفت مع BackgroundWorker المعقد [/b]
[b]ارجو منكما لو تكرمتما تقديم المزيد من العون بادراج الاكواد المقترحة مع كودي الوارد في الموضوع و التجريب ربما يظهر لكما الخلال و انتما الاعلم مني [/b]
[b]اسمحولي على مغالتي في طلبي لكن صدقوني هذا البرنامج يعني لي الكثير لانه يوفر على عناء كبير في عملي[/b]
[b] الخلال ليس في افكاركما حاشا لله انتما مشكورين على الجهد بل الخلال في تطبيقي انا للاكواد لم اعرف التعامل معها لكوني مبتدى في البرمجة اضافة الى ذلك تصادفت مع BackgroundWorker المعقد [/b]
[b]ارجو منكما لو تكرمتما تقديم المزيد من العون بادراج الاكواد المقترحة مع كودي الوارد في الموضوع و التجريب ربما يظهر لكما الخلال و انتما الاعلم مني [/b]
[b]اسمحولي على مغالتي في طلبي لكن صدقوني هذا البرنامج يعني لي الكثير لانه يوفر على عناء كبير في عملي[/b]
الصفحات : 1 2