|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2006
Messaggi: 6
|
Problema Con Winsock 2005 .NET
salve a tutti, ho scaricato da thecodeproject le Winsock 2005 .NET adattabili a VB .NET e compatibil con quasi tutti i computer che hanno installato ovviamente le framework 2.0
le winsock sono come quelle del vb6, addirittura hanno implementato nuove funzioni, il problema ora è questo, quando metto: Public Sub dataArrival(sender as Object, e As BytesTotal)Handles winsock1.OnDataArrival Dim a As String winsock.get(a) TextBox.text = a End Sub e vado ad eseguire il programma, mi dà un errore di thread, la stranezza è ke se metto MsgBox(a) al posto di textbox1.text = a, ricevo un msgbox con la risposta del server, come mai e come posso rimediare?? grazie mi dà questo errore : "Cross-thread operation not valid: Control CS accessed from a thread other than the thread it was created on vi allego il progetto ke ho scaricato da codeproject http://xoomer.virgilio.it/quickurl/Winsock2005DLL.dll |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
In C#, quando mi arriva un evento da un altro thread che deve modificare l'UI, io utilizzo un timer delle Windows.Forms; sul metodo richiamato dal timer puoi modificare l'interfaccia. Da qualche parte sempre su code project avevo trovato una text box thread-safe ma era per C#, nel mio caso non mi serviva perchè quel codice non funziona sotto il compact framework. E per fortuna che non lavori con le MFC, con queste quando ti arriva un evento da un altro thread, non sei neanche all'interno dell'oggetto, sembra quasi che venga richiamato un metodo statico; devi tenerti da qualche parte fuori dalla classe l'handle dell'oggetto, così quando ti arriva un evento, mandi un messaggio all'oggetto tramite l'handle. Un vero casino. |
|
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Sep 2006
Messaggi: 6
|
Quote:
|
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Codice:
Public Sub dataArrival(sender as Object, e As BytesTotal)Handles winsock1.OnDataArrival Devi dichiarare 'a' in un punto accessibile anche a OnTimerElapsed Dim a As String winsock.get(a) Fai partire un timer End Sub Public Sub OnTimerElapsed(...) Interropi il timer TextBox.text = a End Sub Ultima modifica di tomminno : 01-10-2006 alle 13:07. |
|
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Sep 2006
Messaggi: 6
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Sep 2006
Messaggi: 6
|
Codice:
Public Class Form1
Dim Data As String
Private Sub wsk_DataArrival(ByVal sender As Object, ByVal e As Winsock2005DLL.WinsockDataArrivalEventArgs) Handles wsk.DataArrival
wsk.Get(Data)
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Enabled = False
SC.Text = Data
End Sub
End Class
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Non so che dirti. Il timer è di quelli dell'interfaccia grafica?
Se usi VB.NET dovrebbe essere nel namespace System.Windows.Forms. In .NET ci sono almeno 3 classi Timer, ma solo quella inclusa in Windows.Forms consente di modificare l'interfaccia grafica. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2002
Città: Roma
Messaggi: 587
|
ricordo veramente poco di .net ma usare un timer per una cosa del genere mi sembra uno spreco, una volta non esistevano semafori, monitor e boiate del genere?
__________________
AMD Phenom II 965 Black Edition | Gigabyte 990XA-UD3 | Corsair 8GB DDR3 1666 | Intel SSD 320 160GB + WD Caviar Green 3TB | AsusGeForce GTX770 DC II| CoolerMaster 690 II | Philips 231e1sb |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2002
Città: Roma
Messaggi: 587
|
capito tnx
__________________
AMD Phenom II 965 Black Edition | Gigabyte 990XA-UD3 | Corsair 8GB DDR3 1666 | Intel SSD 320 160GB + WD Caviar Green 3TB | AsusGeForce GTX770 DC II| CoolerMaster 690 II | Philips 231e1sb |
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Sep 2006
Messaggi: 6
|
quindi devo trovare un controllo thread safe??
|
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Sep 2006
Messaggi: 6
|
raga allora, qualche suggerimento?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:12.



















