IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Arrêter le traitement


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut Arrêter le traitement
    Bonjour à tous !

    Je fais actuellement une application en VB.NET mais je cherche désespérément une solution.^^

    En fait, j'ai un traitement qui dure assez longtemps car il y a beaucoup d'éléments à faire transférer vers une autre application.
    Je voudrai ajouter un bouton pour pouvoir annuler le transfert de ces éléments, mais le hic, c'est que lorsque le traitement est lancé, il est impossible de pouvoir cliquer sur le bouton "Cancel" vu que l'application travail derrière.

    Avez-vous des solutions ?

    J'ai essayé la fonction sleep, mais je ne peux toujours pas accéder au bouton.

    Merci par avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il faut faire les traitements lourds dans un autre thread, pour ne pas bloquer le thread qui gère l'interface graphique.
    Cherche sur le forum, il y a plein d'exemples

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    D'accord ! Merci pour la réponse

    Je me doutais qu'il fallait faire ce genre de chose

  4. #4
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    Utilise le background worker c'est simple et rapide à mettre en place

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Le BackgroundWorker ?

    A quoi sert-il exactement ? Je ne connais pas =/

    edit : Ah oui, d'accord, il y a un composant sur visual studio ! Je vais regarder ça, merci

  6. #6
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par kelegan Voir le message
    BackgroundWorker
    En clair, ca veut dire : travail en arriere plan.
    Toutes les infos : http://msdn.microsoft.com/en-us/libr...undworker.aspx

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Re-bonjour !

    Depuis hier je bosse sur le BackgroundWorker. J'ai réussi à faire quelques trucs en reprenant un code sur le mdsn et en le bidouillant !

    J'arrive à faire mon traitement avec ma requête SQL, mais le problème, c'est que dans mon traitement, j'ai une boucle assez longue, et je n'arrive pas à "débloquer" ma form pendant ce traitement.

    Voici mon code, si vous avez quelques minutes à perdre.. :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
     
    Public Class FibonacciForm
    	Inherits System.Windows.Forms.Form
    	'
     
    	'
    	Private TotalEl As Integer = 0
    	Private Cancel As Boolean = False
    	Private numberToCompute As Integer = 0
    	Private highestPercentageReached As Integer = 0
    	Private connexion As New SqlConnection
    	Private instanceNameProp As String
    	Private numericUpDown1 As System.Windows.Forms.NumericUpDown
    	Private WithEvents startAsyncButton As System.Windows.Forms.Button
    	Private WithEvents cancelAsyncButton As System.Windows.Forms.Button
    	Private progressBar1 As System.Windows.Forms.ProgressBar
    	Private resultLabel As System.Windows.Forms.Label
    	Private ListBox1 As System.Windows.Forms.ListBox
    	Private WithEvents backgroundWorker1 As System.ComponentModel.BackgroundWorker
    	Public Sub New()
    		InitializeComponent()
    	End Sub	'New
     
    	Private Sub startAsyncButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startAsyncButton.Click
     
    		' Reset the text in the result label.
    		resultLabel.Text = [String].Empty
     
    		' Disable the UpDown control until 
    		' the asynchronous operation is done.
    		Me.numericUpDown1.Enabled = False
    		numericUpDown1.Value = NbElement()
    		resultLabel.Text = "0/" & NbElement()
    		' Disable the Start button until 
    		' the asynchronous operation is done.
    		Me.startAsyncButton.Enabled = False
     
    		' Enable the Cancel button while 
    		' the asynchronous operation runs.
    		Me.cancelAsyncButton.Enabled = True
     
    		' Get the value from the UpDown control.
    		numberToCompute = CInt(numericUpDown1.Value)
     
    		' Reset the variable for percentage tracking.
    		highestPercentageReached = 0
     
     
    		' Start the asynchronous operation.
    		backgroundWorker1.RunWorkerAsync(numberToCompute)
    	End Sub
     
    	Private Sub cancelAsyncButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancelAsyncButton.Click
    		Cancel = True
    		' Cancel the asynchronous operation.
     
     
    		' Disable the Cancel button.
    		cancelAsyncButton.Enabled = False
     
    	End Sub	'cancelAsyncButton_Click
     
    	' This event handler is where the actual work is done.
    	Private Sub backgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles backgroundWorker1.DoWork
     
    		' Get the BackgroundWorker object that raised this event.
    		Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
    		' Assign the result of the computation
    		' to the Result property of the DoWorkEventArgs
    		' object. This is will be available to the 
    		' RunWorkerCompleted eventhandler.
    		''
    		e.Result = ComputeFibonacci(e.Argument, worker, e)
    		''
    	End Sub	'backgroundWorker1_DoWork
     
    	' This event handler deals with the results of the
    	' background operation.
    	Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorker1.RunWorkerCompleted
     
    		' First, handle the case where an exception was thrown.
    		If (e.Error IsNot Nothing) Then
    			MessageBox.Show(e.Error.Message)
    		ElseIf e.Cancelled Then
    			' Next, handle the case where the user canceled the 
    			' operation.
    			' Note that due to a race condition in 
    			' the DoWork event handler, the Cancelled
    			' flag may not have been set, even though
    			' CancelAsync was called.
    			resultLabel.Text = "Canceled"
    		Else
    			' Finally, handle the case where the operation succeeded.
    			resultLabel.Text = e.Result.ToString()
    		End If
     
    		' Enable the UpDown control.
    		Me.numericUpDown1.Enabled = True
     
    		' Enable the Start button.
    		startAsyncButton.Enabled = True
     
    		' Disable the Cancel button.
    		cancelAsyncButton.Enabled = False
    	End Sub	'backgroundWorker1_RunWorkerCompleted
     
    	' This event handler updates the progress bar.
    	Private Sub backgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles backgroundWorker1.ProgressChanged
    		'
                   GalaxyConnection()
                   '
    		FrmMain.Exporter.Enabled = True
    		Module1.connection_travail(connexion)
    		Try
    			Dim strRequeteLocation As String = "Exec CREATE_PROP"
    			Dim oCommandLocation As New SqlCommand(strRequeteLocation, connexion)
    			Dim MyExecut As SqlDataReader
    			MyExecut = oCommandLocation.ExecuteReader()
    			While MyExecut.Read()
    				Dim tagnames As String() = {"$IB_Property"}
    				Dim queryResult As IgObjects = galaxy.QueryObjectsByName(EgObjectIsTemplateOrInstance.gObjectIsTemplate, tagnames)
    				Dim userDefined As ITemplate = DirectCast(queryResult(1), ITemplate)
    				'Prop
    				instanceNameProp = [String].Format("$" + MyExecut(1))
    				'création Prop
    				sampleinstProp = userDefined.CreateTemplate(instanceNameProp, True)
    				ListBox1.Items.Add("Création de : " & instanceNameProp)
    				'progressBar1.Value = progressBar1.Value + 1
    				Me.progressBar1.Value = e.ProgressPercentage
    				ListBox1.SetSelected(progressBar1.Value - 1, True)
    				resultLabel.Text = progressBar1.Value & "/" & TotalEl
    				If (Cancel) Then
    					Me.backgroundWorker1.CancelAsync()
    				End If
    			End While
    			MyExecut.Close()
    		Catch ex As Exception
    			MsgBox("Arrêt du transfert ! " & ex.Message)
    		End Try
    		connexion.Close()
    	End Sub
     
    	' This is the method that does the actual work. For this
    	' example, it computes a Fibonacci number and
    	' reports progress as it does its work.
    	Function ComputeFibonacci(ByVal n As Integer, ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs) As Long
     
    		' The parameter n must be >= 0 and <= 5000.
    		' Fib(n), with n > 5000, overflows a long.
    		If n < 0 OrElse n > 5000 Then
    			Throw New ArgumentException("value must be >= 0 and <= 5000", "n")
    		End If
     
    		Dim result As Long = 0
     
    		' Abort the operation if the user has canceled.
    		' Note that a call to CancelAsync may have set 
    		' CancellationPending to true just after the
    		' last invocation of this method exits, so this 
    		' code will not have the opportunity to set the 
    		' DoWorkEventArgs.Cancel flag to true. This means
    		' that RunWorkerCompletedEventArgs.Cancelled will
    		' not be set to true in your RunWorkerCompleted
    		' event handler. This is a race condition.
    		If worker.CancellationPending Then
    			e.Cancel = True
    		Else
    			If n < 2 Then
    				result = 1
    			Else
    				result = ComputeFibonacci(n - 1, worker, e) + ComputeFibonacci(n - 2, worker, e)
    			End If
     
    			' Report progress as a percentage of the total task.
    			Dim percentComplete As Integer = CSng(n) / CSng(numberToCompute) * 100
    			If percentComplete > highestPercentageReached Then
    				highestPercentageReached = percentComplete
    				worker.ReportProgress(percentComplete)
    			End If
     
    		End If
     
    		Return result
     
    	End Function
     
     
    	<STAThread()> Shared Sub Main()
    		Application.Run(New FibonacciForm)
    	End Sub	'Main
    End Class 'FibonacciForm
    J'ai pas eu le temps de modifier les commentaires, donc ils sont encore en anglais et par rapport au code de l'application du msdn.

    En faite, j'ai trouvé le problème, c'est que dans le "Progress", le traitement continue car il y a ma boucle et tant que le traitement n'est pas fini, je ne peux pas cliquer sur le bouton "Cancel". Mais le hic, c'est que je suis obligé de faire une boucle, sinon, le temps du traitement durera beaucoup trop longtemps pour l'Homme^^ C'est la connexion avant mon traitement qui me prends beaucoup de temps, donc si je peux le faire qu'une seule fois, c'est plutôt pas mal, et je suis obligé d'utiliser ma fonction GalaxyConnection(), sinon j'ai des problèmes d'instances au niveau de mon traitement..

    On m'a parlé de faire du multithreading avec le bouton Cancel, pensez-vous que ça peut résoudre mon problème ?

    Si vous avez d'autres question, n'hésiter pas


    EDIT : J'ai trouvé quelque chose de pas trop mal ! Mettre ma fonction GalaxyConnection dans le load de la form, comme ça, je me connecte qu'une seule fois.

    Par contre, j'ai toujours l'impossibilité de cliquer sur mon bouton Cancel..

    En fait, j'ai l'impression qu'il ne prends pas en compte mon CancelAsync, car en mettant "Me.backgroundWorker1.CancelAsync()" à la fin de Progress, il ne s'arrête pas ! Ce qu'il devrait faire au contraire !

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai l'impression que tu n'as pas bien compris le principe du BGW... ce n'est pas dans le ProgressChanged qu'il faut faire le boulot, c'est dans le DoWork (comme son nom l'indique). L'évènement ProgressChanged sert seulement à afficher la progression, avec une ProgressBar par exemple. Cet évènement est déclenché sur le thread de l'UI, donc il ne faut pas faire de traitements lourds dedans.

    Citation Envoyé par kelegan Voir le message
    Par contre, j'ai toujours l'impossibilité de cliquer sur mon bouton Cancel..

    En fait, j'ai l'impression qu'il ne prends pas en compte mon CancelAsync, car en mettant "Me.backgroundWorker1.CancelAsync()" à la fin de Progress, il ne s'arrête pas ! Ce qu'il devrait faire au contraire !
    C'est à toi de vérifier pendant l'exécution si la propriété CancellationPending du BGW est à true. Si oui, tu sors de la boucle (si tu es dans une boucle bien sûr...)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Ah d'accord ! D'où le "Do_Work"..

    Je vais modifier ça !

    Le CancelAsyn est bien à true, mais peut-être que du coup, vu que le traitement est dans le Progress, il y a problème avec ça !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Bon, voilà, j'ai réussi !

    En fait, j'ai fais appelle a mon Progress dans mon traitement, et ça fonctionne !

    Merci de m'avoir aidé sur ce problème

    A bientôt !

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par kelegan Voir le message
    En fait, j'ai fais appelle a mon Progress dans mon traitement, et ça fonctionne !
    hein ?

  12. #12
    Membre confirmé Avatar de jlm22
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2010
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 203
    Par défaut
    La méthode progresse est censé être là seulement pour savoir où en est le traitement du background worker (progress bar, message ...) mais en aucun cas faire ton traitement. comme l'a dit Tomlev plus haut tu doit utiliser la méthode DoWork ainsi que RunAsync il me semble pour la lancer.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Pour être plus clair, je fais ceci dans mon traitement (dans ma boucle while de ma requête sql)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    backgroundWorker1.ReportProgress(cmpt)
    cmpt est un compteur que j'incrémente dans ma boucle de traitement. Un peu plus compréhensible Tomlev ? ^^

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par kelegan Voir le message
    Pour être plus clair, je fais ceci dans mon traitement (dans ma boucle while de ma requête sql)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    backgroundWorker1.ReportProgress(cmpt)
    cmpt est un compteur que j'incrémente dans ma boucle de traitement. Un peu plus compréhensible Tomlev ? ^^
    Ah ok, je préfère ça

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Bonjour tout le monde,

    Je me permet de répondre sur ce topic marqué résolu, parce que j'ai juste une petite précision à demander.

    Je me sers du BackGroundWorker pour la première fois et entre le msdn et les différents topics que j'ai trouvé sur ce forum j'ai bien compris le fonctionnement du BGW et ça fonctionne très bien, à ce niveau là pas de soucis.
    En revanche ce qui se passe dans mon cas, c'est que dans le Do_Work, c'est une requête qui part en base et qui est trèèèèèès longue, donc lorsque je fais CancelAsync() comment faire pour stopper cette requête (KillThread ?), de même pour afficher l'état d'avancement à part faire une boucle bidon qui fait avancer la ProgressBar mais sans montrer réellement la progression, comment savoir vraiment où en est le thread ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub BGWRechercheRapport_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) _
                    Handles BGWRechercheRapport.DoWork
     
            e.Result = _CtrlRapport.getListeRapports(DTPDebut.Value, DTPFin.Value, My.Settings.UserEnCours.Visu, _
                                                     _Accueil.Contexte, e.Argument(0), e.Argument(1))
     
     
        End Sub

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Shadam Voir le message
    En revanche ce qui se passe dans mon cas, c'est que dans le Do_Work, c'est une requête qui part en base et qui est trèèèèèès longue, donc lorsque je fais CancelAsync() comment faire pour stopper cette requête (KillThread ?)
    Faut pas tuer le thread, parce que tu sais pas trop ce qui va se passer derrière... ça va pas forcément interrompre la requête sur la BDD.
    Certains SGBD permettent d'annuler une requête avec DbCommand.Cancel, mais ça suppose d'avoir exécuté la requête de façon asynchrone...

    Tu peux sans doute faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    SqlCommand command = new SqlCommand(commandText, connection);
     
                    connection.Open();
                    IAsyncResult result = command.BeginExecuteReader();
                    while (!result.IsCompleted)
                    {
                        if (bgw.CancellationPending)
                        {
                            command.Cancel();
                            e.Cancel = true;
                            return;
                        }
                        System.Threading.Thread.Sleep(100);
                    }
     
                    using (SqlDataReader reader = command.EndExecuteReader(result))
                    {
                        ...
                    }
                }
    (pas testé)

    Par contre les providers ADO.NET ne fournissent pas tous une version asynchrone des méthodes ExecuteXX, donc ça peut pas forcément se généraliser.

    Citation Envoyé par Shadam Voir le message
    de même pour afficher l'état d'avancement à part faire une boucle bidon qui fait avancer la ProgressBar mais sans montrer réellement la progression, comment savoir vraiment où en est le thread ?
    A ma connaissance, on peut pas... à moins que le provider de BDD fournisse un mécanisme spécifique pour ça.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Ou alors, peut-être peux-tu mettre en place une sorte de listbox où s'affiche les informations de ta requête, comme j'ai fait !

  18. #18
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Oui c'est possible mais le problème c'est que mon BackGroundWorker est sur mon IHM et qu'il demande au controleur les données qui lui même les demande à ma couche DAL... donc le soucis c'est que lorsque je fais e.result = (...) cette ligne ne passe à la suivante que lorsque la requête est terminée et que les données reviennent sur l'IHM

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 20
    Dernier message: 09/01/2011, 20h02
  2. Arrêter le traitement dans un HTMLParser.
    Par marc003 dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 29/09/2010, 17h17
  3. Arrêter un traitement
    Par ruda.tom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/05/2008, 11h36
  4. Arrêter un traitement BackGroundWorked
    Par bubulemaster dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/04/2008, 23h06
  5. [VB.NET]Arrêter un traitement
    Par Subkill dans le forum Général Dotnet
    Réponses: 10
    Dernier message: 16/01/2008, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo