none
Mon backgoundworker ne marche pas pour un second clic. RRS feed

  • Discussion générale

  • J'ai une application qui gère un grand volume de données et donc, les requetes sql prend du temps au chargement. J'ai itulusé un backgroundworker mais le problème est que lorsque vous lancez l'opération pour une première fois, il répond sans problème mais pour une seconde fois oh! c'est une éternité help please.

    I have an application that handles a large volume of data and therefore the sql queries takes time to load. I'm using a BackgroundWorker but the problem is that when you start the operation for the first time, it's work without problems but for the second time oh! no work. Help please.


    Eswakal



    samedi 23 avril 2016 15:36

Toutes les réponses

  • Bonjour,

    Il n'y a aucunes raisons. Vous pourriez présenter votre code ?


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    dimanche 24 avril 2016 07:22
  • Voici mon code:

    Public Sub actualiser()
            If BackgroundWorker1.IsBusy Then
                BackgroundWorker1.CancelAsync()
                BackgroundWorker1.RunWorkerAsync(Parametres.cptMaxWorker)
            Else
                BackgroundWorker1.RunWorkerAsync(Parametres.cptMaxWorker)
            End If
        End Sub

    Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
            If BackgroundWorker1.CancellationPending = True Then
                e.Cancel = True
                Return
            Else
                Timer1.Enabled = True

                intfacttour = Nothing
               interTransliImport.selectionnerImport(secteur, ComboBoxRoute.SelectedValue, ComboBoxBL.SelectedValue, dat1, dat2)

                intfacttour = interFactureTour.selectionnerFacture(secteur,
                                                                                                 route,
                                                                                                 bl,
                                                                                                 article,
                                                                                                 dat1, dat2)
                StrDetailFactureTourBindingSource.DataSource = intfacttour
                Dim paramDate As New ReportParameter("dateRap", "DU " & dat1.ToString & " AU " & dat2.ToString)
                _usrImprimArt.ReportViewer1.LocalReport.SetParameters(paramDate)

                _usrImprimArt.Chart1.DataBind()

                _usrImprimArt.strDetailFactureTourBindingSource.DataSource = StrDetailFactureTourBindingSource.DataSource
                _usrImprimArt.ReportViewer1.RefreshReport()
                _usrAfficherTous.Chart1.DataSource = StrDetailFactureTourBindingSource.DataSource
                _usrImprimArt.Chart1.DataBind()
                _usrImprimArt.Chart1.Update()
                _usrImprimArt.Chart1.Visible = True


                lblQte.Text = "Tournesol(" & qteTour & ") - Sigma(" & qteTransli.ToString.Replace("-", "") & ") = " & equart.ToString

                _usrAfficherTous.StrDetailFactureTourDataGridView.Refresh()

                Return
            End If
        End Sub

    Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
            If e.ProgressPercentage < mm And mm < 30 Then
                If mm < 1 Then
                    ProgressBar1.Value = 1
                Else
                    ProgressBar1.Value = mm * 3
                End If
            Else
                ProgressBar1.Value = e.ProgressPercentage
            End If
        End Sub

    Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
            If e.Cancelled Then
                connecter.CloseConnexionSQL()
                connecter.CloseConnexionTemp()
                connecter.CloseConnexionTransli()

                BackgroundWorker1.CancelAsync()
                BackgroundWorker1.Dispose()
                GC.Collect()

                ButtonRechercher.Text = "Démarrer"
                ButtonRechercher.Enabled = False
                ProgressBar1.Value = 0
                ProgressBar1.Visible = False

                Timer1.Enabled = False
                tmrTempReqquete.Enabled = False
            Else
                connecter.CloseConnexionSQL()
                connecter.CloseConnexionTemp()
                connecter.CloseConnexionTransli()

                BackgroundWorker1.CancelAsync()
                BackgroundWorker1.Dispose()
                GC.Collect()

                ProgressBar1.Visible = False

                PictureBoxLoading.Visible = False
                ButtonRechercher.Enabled = True
                btnStop.Visible = False
                'Label1.Text = "Terminé!"
                ButtonRechercher.Text = "Démarrer"
                tmrTempReqquete.Enabled = False
                lblTempsRequete.Text = "Prêt  " & vh & ":" & vm & ":" & vs

                _usrImprimArt.Width = Panel2.Width
                _usrImprimArt.Height = Panel2.Height

                Timer1.Enabled = False
                tmrTempReqquete.Enabled = False
            End If
        End Sub


    Eswakal

    dimanche 24 avril 2016 12:38
  • En fait le vrai problème est quand je fais de tests sur l'environnement de développement tout marche bien. Mais une fois l'application installé, le backgoundworker ne repond plus après un premier appel.

    Eswakal

    dimanche 24 avril 2016 16:05