IL SEMBLE QUE VOUS UTILISEZ ADBLOC POUR BLOQUER LA PUBLICITÉ, AUCUNE PUB INTRUSIVE SUR FDZ ET PAS DE POPUP
FDZ EST GRATUIT DONC MERCI DE DÉSACTIVER VOTRE ADBLOCK ET DE BIEN VOULOIR PARTICIPER ET JOUER LE JEU


PAR SUITE D'ABUS LES SERVEURS CCCAM ET ABONNEMENT NE SONT PAS TOLÉRÉS SUR LE FORUM

Affichage des résultats 1 à 2 sur 2
Share |

Discussion: VB.NET le Multithreading plus simple avec le composant BackgroundWorker

  1. #1
    Date d'inscription
    juin 2009
    Messages
    31
    Remerciements
    0
    Remercié 0 fois dans 0 messages
    Pouvoir de réputation
    0

    Par défaut VB.NET le Multithreading plus simple avec le composant BackgroundWorker

    Le composant BackgroundWorker du framework .net permet d’utiliser un "multithreading" facilement. source http://forum.diafdz.com/yaf_postsm24...et.aspx#post24
    prenons un exemple utile.
    durant le temps de la connexion à la base de donnée d'un LoginForm, celle ci parait bloquée (Freeze de l'interface utilisateur).
    au lieu d'utiliser un multithreading, voyons cela avec le BackgroundWorker.
    Nous allons utiliser une ProgressBar pour faire patienter l'utilisateur durant la connexion à la base.
    Cliquer ici pour agrandir

    [CODE=vb]
    Public username, password, tt As String ' Déclarons username et pasword et une valeur tt comme des string
    Public c As Boolean 'déclarons c comme booléen

    Private Sub LoginForm2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.ProgressBar1.Visible = False 'mettons la progressbar en mode invisible au chargement de la loginform


    'évènement du bouton Ok
    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

    Me.ProgressBar1.Visible = True 'mettons la progressbar visible
    username = Me.UsernameTextBox.Text
    password = PasswordTextBox.Text

    Me.BackgroundWorker1.RunWorkerAsync() 'lançons le composant BackgroundWorker en mode asynchrone

    End Sub

    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
    Me.Close()
    End Sub


    'c'est ici dans la procédure de l'évènement DoWork qu'on va se connecter à la base
    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)


    Dim Ds = New MonDataSet 'création de l'objet dataset
    Dim BS = New BindingSource 'création d'un BindingSource

    Dim maTA = New MonDataSetTableAdapters.MatableTableAdapter 'Création d'un table adapter
    maTA.FillByUsernameAndMp(Ds.Matable, username, password) ' Appel de ma requête FillByUsernameAndMp créée auparavant.
    BS.DataSource = Ds.Matable 'liaison de mon bindingsource

    If BS.Current Is Nothing Then 'Si mon binding source ne contient aucune valeur malgrés le lancement de la requête filtrée (username et mot de passe),
    e.Cancel = True 'on arrête le travail du Backgroundwork
    tt = "ERREUR D'IDENTIFICATION"
    c = False 'on affecte la valeur "false" à c qu'on récupérera ultérieurement

    Exit Sub
    Else
    'sinon, on affecte la valeur "true"à c qu'on récupérera ultérieurement
    c = True
    BackgroundWorker1.Dispose() 'on termine le travail du backgroundWorker
    End If

    End Sub
    ' lançons la progressbar en mode asynchrone
    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
    Me.ProgressBar1.Value = e.ProgressPercentage

    End Sub
    ' procédure de l'évènement RunWorkerCompleted ( quand le travail est treminé)
    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted

    If c = False Then 'c est la travaille avec la baleur c booléen, ici on n est pas connecté
    Me.Label1.Text = tt
    Me.ProgressBar1.Visible = False
    Exit Sub
    Else

    Form1.Show() 'on est connecté on passe à l'autre form
    Me.Close()
    End If

    [/CODE]
    Dernière modification par getule ; 13/11/2011 à 20h16. Motif: erreur

  2. #2
    Date d'inscription
    février 2009
    Localisation
    California
    Messages
    2 568
    Remerciements
    38
    Remercié 53 fois dans 39 messages
    Pouvoir de réputation
    13

    Par défaut Re : VB.NET le Multithreading plus simple avec le composant BackgroundWorker

    Merci pour le code bien commenté Cliquer ici pour agrandir

Discussions similaires

  1. Réponses: 40
    Dernier message: 22/10/2017, 09h25
  2. Composant JOOMLA
    Par Samir_dz dans le forum Software (Logiciels)
    Réponses: 11
    Dernier message: 07/09/2009, 10h02
  3. [Problème] Multithreading sous C++/Linux
    Par mouradski dans le forum C & C++
    Réponses: 13
    Dernier message: 11/08/2009, 18h45
  4. Composant Xbox360
    Par VAHYSU dans le forum Ventes
    Réponses: 27
    Dernier message: 26/07/2009, 14h20

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
[Auto utilitaire DZ] [Webimag] [Algérie Info] [Guide Algérie] [Mosquée ALBADR MEAUX] [Photographe MARIAGE]

is PageRank Checking Icon