J'ai un TcpListener
qui obtient un flux sans fin de byte array
. De cela, je convertis le byte() en MemoryStream et nourris un PictureBox pour afficher les images. Cela fonctionne bien. Si je mets les points d'ancrage sur le PictureBox à top/right/bottom/left
qui signifie que l'image se développera lorsque la forme se développe et alors j'étendre effectivement la forme, je reçois l'erreur suivante:Redimensionner le formulaire avec l'image ancrée (à partir de MemoryStream) provoque 'System.ArgumentException' et 'L'application est en mode pause'
An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll
Additional information: Parameter is not valid.
En outre,
The application is in break mode
code
' Enter the listening loop.
While True
Dim client As TcpClient = Await server.AcceptTcpClientAsync()
Dim stream As NetworkStream = client.GetStream
Dim MS As New MemoryStream
Await stream.CopyToAsync(MS)
Await ViewImage(MS)
client.Close()
End While
Voir fonction d'image:
Public Async Function ViewImage(ms As MemoryStream) As Task
Try
Dim myimage As Bitmap
myimage = New Bitmap(ms)
PictureBox1.Image = myimage
PictureBox1.Refresh()
myimage.Dispose()
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Function
Veuillez noter que l'exception n'est pas interceptée dans mon code. Des idées?
Êtes-vous sûr que _ ** la l'image entière ** _ est reçue? Comme TCP est un protocole basé sur les flux, la couche application n'a aucune connaissance des paquets/de la longueur de vos données. Vous pouvez soit essayer de sérialiser/désérialiser l'image sur le flux en utilisant _Binary Serialization_, ou voir [** cette réponse de la mine **] (https://stackoverflow.com/a/35240061/3740093) qui vous aide à diviser les données en des paquets de votre choix (connu sous le nom de _message framing_). –
Oh, attends, tu as manqué de fermer la connexion une fois l'image reçue. Alors ce n'est pas lié aux données ou à la taille de paquet (bien que ce que j'ai dit ci-dessus pourrait être une bonne chose à considérer dans le futur;)). –
Content de pouvoir aider!Je ne sais pas ce que vous savez sur les types de référence/valeur, mais j'ai ajouté un exemple de base à ma réponse pour ceux qui ne le savent pas. –