Erreur avec la commande show !!!
floflo55
Messages postés
271
Statut
Membre
-
floflo55 Messages postés 271 Statut Membre -
floflo55 Messages postés 271 Statut Membre -
Bonjours a tous, j'ai fait un code qui vérifie les mise a jour, le voici:
Tous marche bien mais au moment ou il arrive a la commande " form3.show "
Il me dit qu'il y a eu une erreur et refuse de l'afficher et me dit ca :
Opération inter-threads non valide : le contrôle 'Form1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Merci de m'aider ca fait un mois que je cherche !!!
Un IMMENSE merci d'avance ;)
PS: j'utilise visual basic 2010 express
Private Sub Form1_load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim response As HttpWebResponse = Nothing
Dim sr As StreamReader = Nothing
Try
Dim request As HttpWebRequest = CType(WebRequest.Create("https://www.123.fr/acces.html"), HttpWebRequest)
response = CType(request.GetResponse, HttpWebResponse)
sr = New StreamReader(response.GetResponseStream)
If sr.ReadToEnd <> Me.ProductVersion Then
form3.show
Else
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Finally
If Not (response Is Nothing) Then
response.Close()
End If
If Not (sr Is Nothing) Then
sr.Close()
End If
End Try
End Sub
Tous marche bien mais au moment ou il arrive a la commande " form3.show "
Il me dit qu'il y a eu une erreur et refuse de l'afficher et me dit ca :
Opération inter-threads non valide : le contrôle 'Form1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Merci de m'aider ca fait un mois que je cherche !!!
Un IMMENSE merci d'avance ;)
PS: j'utilise visual basic 2010 express
A voir également:
- Erreur avec la commande show !!!
- Usb show - Télécharger - Sauvegarde
- Invite de commande - Guide
- Commande terminal mac - Guide
- Show key plus - Télécharger - Utilitaires
- Commande dism - Guide
2 réponses
Le .NET, surtout le VisualBasic.net et ses Form en "Shared", "static" en C#, est assez casse-noix avec les threads.
Comme le threading est un peu dur à manipuler pour un débutant, ajoute la propriété
Il ne devrait plus se plaindre (en revanche il ne faut jamais faire ça dans un environnement de production, il faut absolument rendre les opérations thread-safe).
Le Visual Basic c'est bien, mais qu'au début. C++ wins everything.
Comme le threading est un peu dur à manipuler pour un débutant, ajoute la propriété
CheckForIllegalCrossThreadCalls = Falseà form3.
Il ne devrait plus se plaindre (en revanche il ne faut jamais faire ça dans un environnement de production, il faut absolument rendre les opérations thread-safe).
Le Visual Basic c'est bien, mais qu'au début. C++ wins everything.
(Je me corrige de ma version "pas thead-safe donc pas bien").
A chaque fois que tu rencontres ce problème, il faut remplacer
(Je fais plus de VB.NET donc je ne peux pas savoir si ça marchera a 100% et du premier coup)
A chaque fois que tu rencontres ce problème, il faut remplacer
form3.showpar
If form3.InvokeRequired Then
form3.BeginInvoke(New EventHandler(AddressOf form3.show))
Else
form3.show
End IfEt bien-sur adapter form3 et form3.show selon l'objet et la fonction voulue.
(Je fais plus de VB.NET donc je ne peux pas savoir si ça marchera a 100% et du premier coup)
Super sa marche !!! Mille fois merci :)
Mais maintenant j'ai un nouveau code qui ne marche pas, tu as une solution ???
C'est pour prendre une photo
Il me dit:
Opération inter-threads non valide : le contrôle 'WebBrowser1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Merci d'avance :)
Désoler pour toutes ces questions
Mais maintenant j'ai un nouveau code qui ne marche pas, tu as une solution ???
Dim TargetImg As New System.Drawing.Bitmap(WebBrowser1.Size.Width, WebBrowser1.Size.Height)
WebBrowser1.DrawToBitmap(TargetImg, New System.Drawing.Rectangle(0, 0, MyBase.Size.Width, MyBase.Size.Height))
C'est pour prendre une photo
Il me dit:
Opération inter-threads non valide : le contrôle 'WebBrowser1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Merci d'avance :)
Désoler pour toutes ces questions
Merci d'avance
Autrement il est possible de le mettre à la main dans le fichier form3.Designer.vb (accessible via l'explorateur de fichiers de VisualStudio/VisualBasicExpress si je me souviens bien).