Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

VB.NET le Multithreading plus simple avec le composant BackgroundWorker


getule

Messages recommandés

Le composant BackgroundWorker du framework .net permet d’utiliser un "multithreading" facilement. source http://forum.diafdz.com/yaf_postsm24_Comment-travailler-avec-un-BackgroundWorker-vb-net.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.

connex.jpg

 


[left][color=#000000][font=Consolas]Public username, password, tt As String ' Déclarons  username et pasword et une valeur tt comme des string[/font][/color]
[color=#000000][font=Consolas]    Public c As Boolean 'déclarons c comme booléen[/font][/color]

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


[color=#000000][font=Consolas]'évènement du bouton Ok[/font][/color]
[color=#000000][font=Consolas]    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click[/font][/color]

[color=#000000][font=Consolas]        Me.ProgressBar1.Visible = True  'mettons la progressbar visible[/font][/color]
[color=#000000][font=Consolas]        username = Me.UsernameTextBox.Text [/font][/color]
[color=#000000][font=Consolas]        password = PasswordTextBox.Text[/font][/color]

[color=#000000][font=Consolas]        Me.BackgroundWorker1.RunWorkerAsync() 'lançons le composant BackgroundWorker en mode asynchrone[/font][/color]

[color=#000000][font=Consolas]    End Sub[/font][/color]

[color=#000000][font=Consolas]    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click[/font][/color]
[color=#000000][font=Consolas]        Me.Close()[/font][/color]
[color=#000000][font=Consolas]    End Sub[/font][/color]


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


[color=#000000][font=Consolas]        Dim Ds = New MonDataSet  'création de l'objet dataset[/font][/color]
[color=#000000][font=Consolas]        Dim BS = New BindingSource 'création d'un BindingSource [/font][/color]

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

[color=#000000][font=Consolas]        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), [/font][/color]
[color=#000000][font=Consolas]            e.Cancel = True    'on arrête le travail du Backgroundwork  [/font][/color]
[color=#000000][font=Consolas]            tt = "ERREUR D'IDENTIFICATION" [/font][/color]
[color=#000000][font=Consolas]            c = False  'on affecte la valeur "false" à c qu'on récupérera ultérieurement[/font][/color]

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

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

[color=#000000][font=Consolas]    End Sub[/font][/color]
[color=#000000][font=Consolas]' procédure de l'évènement RunWorkerCompleted ( quand le travail est treminé)[/font][/color]
[color=#000000][font=Consolas]    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted[/font][/color]

[color=#000000][font=Consolas]        If c = False Then  'c est la travaille avec la baleur c booléen, ici on n est pas connecté[/font][/color]
[color=#000000][font=Consolas]            Me.Label1.Text = tt[/font][/color]
[color=#000000][font=Consolas]            Me.ProgressBar1.Visible = False[/font][/color]
[color=#000000][font=Consolas]            Exit Sub[/font][/color]
[color=#000000][font=Consolas]        Else[/font][/color]

[color=#000000][font=Consolas]            Form1.Show() 'on est connecté on passe à l'autre form[/font][/color]
[color=#000000][font=Consolas]            Me.Close() [/font][/color]
[color=#000000][font=Consolas]        End If[/font][/color][/left]


Modifié par getule
erreur
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • Messages

    • Or ou pyrite : Comment éviter la supercherie de la pyrite également connue sous le nom d’« or du fou » ? Ce qu'est la pyrite: Les scientifiques écrivent la formule chimique de la pyrite comme «FeS2». Vous voyez, les symboles chimiques du fer et du soufre sont respectivement « Fe » et « S ». Et chaque molécule de pyrite contient un atome de fer avec deux atomes de soufre. Distinguer l’or et la pyrite: Nous (les géologues) savons que sur l’échelle de dureté des minéraux connue sous le nom d'échelle de Mohs,  l’or a un classement de 2,5 à 3. Au fur et à mesure que les éléments disparaissent, il est plutôt mou, et une pépite d’or peut ainsi facilement être grattée avec un couteau de poche. La pyrite a ici l’avantage d’être plus dur et se situe entre 6 et 6,5 sur l’échelle. Un couteau ne suffira pas, vous aurez besoin d’une lime métallique de haute qualité pour le rayer. Frapper de la pyrite avec un marteau  enverra des étincelles. Si vous êtes assez persistant, la pyrite se brisera et finira par se réduire en poudre. Rien de tout cela ne se produit lorsque vous frappez de l’or avec un marteau: pas d’étincelles, pas de poudre. Au lieu de cela avec de l'or, vous pourriez finir par tordre ou aplatir l’échantillon. Non seulement l’or est tendre, mais il est malléable. Différences visuelles Visuellement, les deux matériaux sont jaunâtres, mais l’or est moins cuivré que la pyrite et brille plus . Il ne forme pas non plus de cristaux en forme de cube, comme le fait souvent la pyrite. Au contraire, la plupart de l’or rencontré sur le terrain prend la forme de flocons ou de pépites grumeleuses. L’or laissera également une trace jaune s’il est frotté contre un morceau de porcelaine ou de céramique blanche. Répétez cette même expérience avec de la pyrite et cela laissera une ligne plus sombre, noir verdâtre Spécificité de la pyrite à l'odorat Si vous avez encore des doutes, votre odorat peut aussi vous aider. Bien que l’or soit pratiquement inodore, la pyrite a une légère odeur – et ça sent les œufs pourris car riche en souffre. Test rapide , pratique simple de bijoutiers Les bijoutiers frottent un bijou non poinçonné (non garantit)  sur une céramique. La céramique est un des matériaux les plus résistants au frottement. Aussi, afin de s'assurer rapidement de la nature d'un bijou, ils utilisent une plaque en céramique non émaillée et le grattent  à sa surface. Si une marque noire apparaît, le bijou est fait d’un alliage indéterminé. À l’inverse si la friction laisse derrière elle une marque dorée, c'est bien en or.  
    • Toujours 15 sur Madrid pour ma part...
    • salam déjà ci tu regarde sur la page web de ton ONT tu trouver la référence actuel et la valeur de référence    ONT Information   Current Value Reference Value Optical Signal Sending Status Auto Auto TX Optical Power: 2.35 dBm 0.5 dBm to 5 dBm RX Optical Power: -19.07 dBm -27 dBm to –8 dBm Working Voltage: 3402 mV 3100 mV to 3500 mV Bias Current: 7 mA 0 mA to 90 mA Working Temperature: 50 ℃ –10 to +85 ℃    
    • Voila mon signal dbm j'ai 100 mb et pour le Modem j'ai le nokia blanc 
    • Question au gens qui on fait une demande d'augmentation de débit, que ca soit par l'espace client, en appelant le 12, par Facebook ou par l'agence commercial, combien ont ils pris pour l'effectuer? Au bout de quelques heures, juste après minuit ou vous avez attendu 48h?
×
×
  • Créer...