だから私はメインフォームで、クライアントが接続されている場合は非表示にしたいので、別のクラス「Coms.class」から呼び出されるイベントを作成しましたクラスのすべてのコードは必要ないと思いますが、ただそれを言う必要があります。
これは、Coms クラスからのイベントをリッスンしている関数です。
メインフォーム:
Private Sub sAuthentified(ByVal sender As Coms, ByVal sTemp As String) Handles mComs.sAuthentified
If (Equals(sender.AES_Decrypt(sTemp), "$%?SuccesS&*(")) Then
Me.Hide()
Dim connected As New Connected(mComs)
connected.ShowDialog()
connected.Dispose()
Else
Console.WriteLine("NON")
End If
End Sub
クラス coms でイベントが発生する関数:
Private Sub Receiving(ByVal iAr As IAsyncResult)
Dim bReader As BinaryReader
Dim sReader As StreamReader
Dim sReaderBuffer(iPacketSize) As Char
Dim iReaded As Integer
Try
SyncLock _client.GetStream
_client.GetStream.EndRead(iAr)
End SyncLock
Catch ex As Exception
Exit Sub
End Try
Select Case bReadByte(0)
Case enumTags.Connection
SyncLock _client.GetStream
bReader = New BinaryReader(_client.GetStream)
iPacketSize = bReader.ReadInt16
End SyncLock
RaiseEvent connectionEstablished(Me)
_client.GetStream.BeginRead(bReadByte, 0, 1, AddressOf Receiving, Nothing)
Case enumTags.Authentication
SyncLock _client.GetStream
sReader = New StreamReader(_client.GetStream)
iReaded = sReader.Read(sReaderBuffer, 0, iPacketSize)
End SyncLock
Dim sTemp As New String(sReaderBuffer, 0, iReaded)
RaiseEvent sAuthentified(Me, sTemp)
_client.GetStream.BeginRead(bReadByte, 0, 1, AddressOf Receiving, Nothing)
End Select
End Sub
そのため、イベントが発生すると、別のスレッドから呼び出されたため、デリゲートが必要であるというエラーが表示されます。Coms クラスでは、コールバックのストリームで非同期読み取りがあり、読み取りでイベントが発生するので、それは正常だと思います。
私の問題は次のとおりです。関数 hide で Invoke を呼び出すことができないため、デリゲートの作成方法について混乱しています
助けが必要です