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

    • @laliche je viens d'essayer mais ca ne marche pas, le seul moyen d'accéder au mode superadmin c'est de décrypter le fichier de configuration xml.. je viens de trouver le tutoriel que tu as publié   
    • Plus de 15 applications VPN gratuites sur Google Play utilisaient un SDK malveillant, transformant les appareils Android en proxys résidentiels. Les chercheurs de Human Security ont découvert que toutes les applications en question utilisaient un kit de développement logiciel (SDK) de LumiApps, qui contenait « ProxyLib », une bibliothèque golang pour effectuer le proxy. En mai 2023, ils ont identifié la première application utilisant ProxyLib, un VPN Android gratuit appelé Oko VPN. Par la suite, les chercheurs ont trouvé la même bibliothèque utilisée par le service de monétisation des applications Android LumiApps, comme ils l'indiquent dans leur rapport : « À la fin du mois de mai 2023, l'équipe de Satori a remarqué une activité sur des forums de hackers et de nouvelles applications VPN faisant référence à un SDK de monétisation, lumiapps[.]io. » Après une enquête poussée, il apparaît que ce SDK possède exactement les mêmes fonctionnalités et utilise la même infrastructure de serveur que les applications malveillantes analysées lors de l'enquête sur la version précédente de ProxyLib. LumiApps est utilisé légalement à des fins d'études publicitaires. Ils ont pu ainsi répertorier un ensemble de 28 applications qui utilisaient la bibliothèque ProxyLib pour transformer les appareils Android en proxys :     Lite VPN     Anims Keyboard     Blaze Stride     Byte Blade VPN     Android 12 Launcher (by CaptainDroid)     Android 13 Launcher (by CaptainDroid)     Android 14 Launcher (by CaptainDroid)     CaptainDroid Feeds     Free Old Classic Movies (by CaptainDroid)     Phone Comparison (by CaptainDroid)     Fast Fly VPN     Fast Fox VPN     Fast Line VPN     Funny Char Ging Animation     Limo Edges     Oko VPN     Phone App Launcher     Quick Flow VPN     Sample VPN     Secure Thunder     Shine Secure     Speed Surf     Swift Shield VPN     Turbo Track VPN     Turbo Tunnel VPN     Yellow Flash VPN     VPN Ultra     Run VPN Toutefois, on ignore si les développeurs d'applications gratuites savaient que le SDK transformait les appareils de leurs utilisateurs en serveurs proxy susceptibles d'être utilisés pour des activités indésirables. Les chercheurs pensent quant à eux que les applications malveillantes sont liées au fournisseur russe de services proxy résidentiels Asocks, après avoir observé les connexions effectuées sur le site web du fournisseur de proxy. Le service Asocks est souvent promu par les cybercriminels sur les forums de piratage.
    • Je ne connais pas cette astuce  mais essaye d'ajouter les 3 chiffres de l'indicatif international qui est 213 au début du numéro du fixe, je n'ai ni la fibre ni ce modem pour confirmer moi-même c'est juste une idée.
    • Normalement ca coûte rien moi heureusement que j'ai un accès total du modem sinon je vais acheté un autre 
    • C'est pas officiel , bruit de couloir de la radieuse , c l'oncle dun ami  qui m'a dit "débit min fibre 20 méga pr 2000da"
×
×
  • Créer...