تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] سؤال : الاستخدام الصحيح ل BackgroundWorker او Threading
#3
(04-10-17, 09:56 PM)Rabeea Qbaha كتب :
(04-10-17, 04:33 PM)dubai.eig كتب : السلام عليكم ورحمة الله


اسفسر عن الطريقه الصحيحه في التعامل مع  ل BackgroundWorker او Threading

عندي كود شغال تمام بس المشكله عند عمل الكود يبحث في قاعدة البيانات واذا القاعدة كبيره يعلق البرنامج ويتاخر

بعد اذنكم محتاج الطريقه لصحيحه للتعامل مع الكود بدون ما يحصل هناك اي تعليق اي توقف

الكود هذا هو  

كود :
  Dim con As New SQLiteConnection(String.Format("Data Source= {0}\DB" & DBT & ".s3db", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)))
       Dim com As String = String.Format("Select PFX From DB Where PFX='{0}' and Ba = '" & ban.Text & "'", Trim(PFX.Text))
       Dim ds = New DataSet
       Dim da = New SQLiteDataAdapter(com, con)
       da.fill(ds)
       If (ds.Tables(0).Rows.Count > 0) Then
           Multi.Text = PFX.Text

       Else
           Multi.Text = PFX.Text
           Multi.BackColor = SystemColors.Info

       End If



       If contestnx = "All Asian" And Continentx = "AS" and WORK.Text = "AS" And ban.Text = "160M" Then
           Points.Text = "3"

       ElseIf contestnx = "All Asiant" And Continentx = "AS" and WORK.Text = "AS" And ban.Text = "80M" Or ban.Text = "10M" Then
           Points.Text = "2"



       ElseIf contestnx = "All Asiant" And Continentx = "AS" and WORK.Text = "NA" Or WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" And ban.Text = "160M" Then
           Points.Text = "9"


       ElseIf contestnx = "All Asiant" And Continentx = "AS" and WORK.Text = "NA" Or WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" And ban.Text = "80M" Or ban.Text = "10M" Then
           Points.Text = "6"

       ElseIf contestnx = "All Asiant" And Continentx = "AS" and WORK.Text = "NA" Or WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" And ban.Text = "40M" or ban.Text = "20M" Or ban.Text = "15M" Then
           Points.Text = "3"


       ElseIf contestnx = "All Asiant" And Continentx = "NA" Or Continentx = "SA" Or Continentx = "EU" Or Continentx = "OC" And WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" Or WORK.Text = "NA" Then
           Points.Text = "0"


       ElseIf contestnx = "All Asiant" And WORKinfo.PFX.Text = PFXX Then
           Points.Text = "0"
       End If



بارك الله فيكم وجزاكم الف خير

قم باضافه backgroundworker الى المشروع

كود :
   Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       Dim con As New SQLiteConnection(String.Format("Data Source= {0}\DB" & DBT & ".s3db", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)))
       Dim com As String = String.Format("Select PFX From DB Where PFX='{0}' and Ba = '" & ban.Text & "'", Trim(PFX.Text))
       Dim ds = New DataSet
       Dim da = New SQLiteDataAdapter(com, con)
       da.fill(ds)
       If (ds.Tables(0).Rows.Count > 0) Then
           Multi.Text = PFX.Text

       Else
           Multi.Text = PFX.Text
           Multi.BackColor = SystemColors.Info

       End If



       If contestnx = "All Asian" And Continentx = "AS" And WORK.Text = "AS" And ban.Text = "160M" Then
           Points.Text = "3"

       ElseIf contestnx = "All Asiant" And Continentx = "AS" And WORK.Text = "AS" And ban.Text = "80M" Or ban.Text = "10M" Then
           Points.Text = "2"



       ElseIf contestnx = "All Asiant" And Continentx = "AS" And WORK.Text = "NA" Or WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" And ban.Text = "160M" Then
           Points.Text = "9"


       ElseIf contestnx = "All Asiant" And Continentx = "AS" And WORK.Text = "NA" Or WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" And ban.Text = "80M" Or ban.Text = "10M" Then
           Points.Text = "6"

       ElseIf contestnx = "All Asiant" And Continentx = "AS" And WORK.Text = "NA" Or WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" And ban.Text = "40M" Or ban.Text = "20M" Or ban.Text = "15M" Then
           Points.Text = "3"


       ElseIf contestnx = "All Asiant" And Continentx = "NA" Or Continentx = "SA" Or Continentx = "EU" Or Continentx = "OC" And WORK.Text = "SA" Or WORK.Text = "EU" Or WORK.Text = "OC" Or WORK.Text = "NA" Then
           Points.Text = "0"


       ElseIf contestnx = "All Asiant" And WORKinfo.PFX.Text = PFXX Then
           Points.Text = "0"

   End Sub
و في كود ال button استخدم الكود الاتي لتشغيل البحث 
كود :
           BackgroundWorker1.RunWorkerAsync

تستطيع ايضا وضع صوره GIF تدل على ان عمليه البحث جاريه 
اة مجرد كتابه عن طريق label 
اذا اردت فعل ذلك قم بعرض الصوره او النص عند بدء العمليه 
و قم بأخفاءها عند انتهاء عمل البحث في backgroundworker في الكود الاتي :

كود :
   Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
label1.Visible =False   
   End Sub





شكرا على الرد

بس غريبه ان الكود ما اشتغل

عندما احط الكود في ال button   بدون backgroundworker   يكون شغال تمام

بس عندما احط الكود في ال backgroundworker   لا يعمل


كذا الكود يكون شغال تمام
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim con As New SQLiteConnection(String.Format("Data Source= {0}\DB" & DBT & ".s3db", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)))
      Dim com As String = String.Format("Select PFX From DB Where PFX='{0}' and Ba = '" & ban.Text & "'", Trim(PFX.Text))
      Dim ds = New DataSet
      Dim da = New SQLiteDataAdapter(com, con)
      da.fill(ds)
      If (ds.Tables(0).Rows.Count > 0) Then
          Multi.Text = PFX.Text

      Else
          Multi.Text = PFX.Text
          Multi.BackColor = SystemColors.Info

      End If




   End Sub




بس اذا حطيته في BackgroundWorker1_DoWork  لا يعمل والا يطلع لي رساله غلط 

كود :
 Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
         Dim con As New SQLiteConnection(String.Format("Data Source= {0}\DB" & DBT & ".s3db", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)))
      Dim com As String = String.Format("Select PFX From DB Where PFX='{0}' and Ba = '" & ban.Text & "'", Trim(PFX.Text))
      Dim ds = New DataSet
      Dim da = New SQLiteDataAdapter(com, con)
      da.fill(ds)
      If (ds.Tables(0).Rows.Count > 0) Then
          Multi.Text = PFX.Text

      Else
          Multi.Text = PFX.Text
          Multi.BackColor = SystemColors.Info

      End If

  End Sub
      Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Label14.Visible =False  
  End Sub
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       BackgroundWorker1.RunWorkerAsync
   End Sub



شكرا
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: سؤال : الاستخدام الصحيح ل BackgroundWorker او Threading - بواسطة dubai.eig - 05-10-17, 12:11 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤال عن الاسمبلي و النيم سبيس justforit 0 104 07-12-25, 12:28 AM
آخر رد: justforit
  فائدة بخصوص التعامل مع علامات التنصيص مع {سؤال} justforit 4 273 02-11-25, 11:19 PM
آخر رد: justforit
  [نقاش] سؤال MetoDas 2 1,490 20-04-25, 10:21 PM
آخر رد: Kamil
  [سؤال] سؤال ترددت قبل نشرة:طابعة الباركود لماذا تطبع أكثر من ليبل فارغ قبل السليم dr.programming 1 511 20-04-25, 09:26 PM
آخر رد: Kamil
  سؤال لو سمحتم احبتى فى الله خالد كامل1 4 809 09-02-25, 12:02 AM
آخر رد: princelovelorn
  سؤال واستفسار خالد كامل1 1 403 04-02-25, 09:31 PM
آخر رد: aliday03
  سؤال فى تقرير كريستال خالد كامل1 0 396 04-02-25, 05:50 AM
آخر رد: خالد كامل1
Question [VB.NET] هناك سؤال يهم كل مبرمج الماذا برنامجك يظهر على بعض الشاشات اكثر دقه بشكل مصغر ومشوه Microformt 0 448 01-02-25, 03:48 PM
آخر رد: Microformt
  لايمكن الوصول للملف لأنه قيد الاستخدام بواسطة عملية أخرى صالح عبدالله 3 332 24-12-24, 12:17 AM
آخر رد: صالح عبدالله
  [سؤال] سؤال في الكونسول justforit 1 369 21-12-24, 02:57 PM
آخر رد: aljzazy

التنقل السريع :


يقوم بقرائة الموضوع: