Bonjour,
Je fais appel à vous pour me sortir d'un problème. J'ai commencé à développé un programme et d'un coup j'ai eu une erreur que voici :
Cet erreur est situé sur une ligne du designer.vb de ma fenetre principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Une exception non gérée du type 'System.InvalidOperationException' s'est produite Informations supplémentaires : Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : La référence d'objet n'est pas définie à une instance d'un objet.
La ligne en cause est celle dans la fonction. N'ayant pas trop d’idées pour déboguer cette erreur, j'ai donc fais retour arrière et mis en commentaire tout les morceaux de codes récents. Mais rien n'y fait cette erreur ne disparaît pas et apparaît avant même la moindre exécution d'une ligne de code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <Global.System.Diagnostics.DebuggerStepThroughAttribute()> _ Protected Overrides Sub OnCreateMainForm() Me.MainForm = Global.ChatPriv.Form1 End Sub
Voici le code de mon programme :
Merci d'avance de vous pencher sur mon soucis.
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 Imports System.Threading Imports System.Net Imports System.Net.Sockets Imports System.Text Imports System.IO Public Class Form1 '******************THREAD - DELEGATES************************* Dim threadReception As New Thread(AddressOf receptionContinue) Dim threadVerfiConnect As New Thread(AddressOf verifConnectSocket) Delegate Sub dModifFormulChat(ByVal data As String) Dim modifChat As dModifFormulChat '************VARIABLES COMMUNICATION SERVEUR****************** Dim client As TcpClient Dim flux As NetworkStream = client.GetStream() Dim writer As StreamWriter = New StreamWriter(flux) Dim reader As StreamReader = New StreamReader(flux) Dim portMax As Integer = 65535 Dim portMin As Integer = 1000 Dim regexIP As New RegularExpressions.Regex("([0-9]{1,3}\.){3}") '******************VARIABLES MESSAGES************************* Private Const errorIP As String = "L'adresse IP du serveur spécifiée n'est pas une addresse IP valide." Private Const errorPort As String = "Le port spécifié est incorrect, il doit être un nombre valide." Private Const inConnect As String = "Tentative de connexion au serveur en cours..." Private Const connectOK As String = "Connexion au serveur réussie." Private Const connectNOK As String = "La connexion au serveur a échoué." Private Const deconnected As String = "La connexion avec le serveur a été perdue." Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load threadReception.IsBackground = True threadVerfiConnect.IsBackground = True End Sub Private Sub buttonConnect_Click(sender As Object, e As EventArgs) Handles buttonConnect.Click Dim serverAdress As IPAddress Dim serverPort As Integer Dim readyToConnect As Boolean = False If IPAddress.TryParse(adressServer.Text, serverAdress) And regexIP.IsMatch(adressServer.Text) Then readyToConnect = True Else formulChat.AppendText(errorIP + vbCrLf) readyToConnect = False End If If IsNumeric(portServer.Text) Then serverPort = CType(portServer.Text, Integer) If serverPort > portMin And serverPort < portMax Then readyToConnect = True Else readyToConnect = False formulChat.AppendText(errorPort + vbCrLf) End If Else readyToConnect = False formulChat.AppendText(errorPort + vbCrLf) End If If readyToConnect Then socketConnect(serverAdress, serverPort) End If End Sub Private Sub socketConnect(ByVal ip As IPAddress, ByVal port As Integer) 'Connection au socket via TcpClient formulChat.AppendText(inConnect + vbCrLf) Try client = New TcpClient(ip.ToString, port) If threadReception.ThreadState = ThreadState.Unstarted Then threadReception.Start() End If If threadVerfiConnect.ThreadState = ThreadState.Unstarted Then threadVerfiConnect.Start() End If Catch ex As Exception formulChat.AppendText(connectNOK + vbCrLf) PictureBox1.Image = My.Resources.rondRouge End Try End Sub Private Sub modifFormulChat(ByVal data As String) formulChat.AppendText(data) End Sub Private Sub verifConnectSocket() Dim socketConnect As Boolean = False While True If client.Connected And Not socketConnect Then socketConnect = True PictureBox1.Image = My.Resources.rondVert Me.Invoke(modifChat, (connectOK + vbCrLf)) End If If Not client.Connected And socketConnect Then socketConnect = False PictureBox1.Image = My.Resources.rondRouge Me.Invoke(modifChat, (deconnected + vbCrLf)) End If End While End Sub Private Sub receptionContinue() While client.Connected Try If Not reader.EndOfStream Then formulChat.AppendText(reader.ReadToEnd) End If Catch ex As Exception End Try End While End Sub End Class
Cordialement
EDIT: J'ai trouvé mon erreur. Le problème vient de cette partie dans l'initialisation de mes variables :
Je configure mon stream a partir d'un TcpClient non instancié .....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim client As TcpClient Dim flux As NetworkStream = client.GetStream() Dim writer As StreamWriter = New StreamWriter(flux) Dim reader As StreamReader = New StreamReader(flux)
Partager