11/06/12 16:40
piter123
ho relizzato un progetto che si collega ad un server, scarica dei dati, gli elabora e li visualizza tramite componente esterno di grafico ecgraph, per la connessione ho usato sempre il componente com di vb6 winsock. funziona tutto correttamente forchè per il fatto che una grande quantità di antivirus rileva il winsock come uno spyware.
Ho quindi eliminato il com winsock e utilizzato direttamente la classe di net Imports System.Net.Sockets.
Ora il progetto funziona correttamente per quel che riguarda il sock ma mi và in crash nel momento in cui inizializza la form principale dove è inserito il controllo com ecgraph, infatti togliendo tale ocx esterno il progetto parte regolarmente. Si è creato una specie di conflitto tra l'ocx esterno la classe sock di net. Sicuramente sbaglio io in qualcosa, mi date suggeriementi grazie
l'errore che compare è il seguente :
Ultima modifica effettuata da piter123 11/06/12 16:43
aaa
11/06/12 20:05
HeDo
basta aggiungere l'attributo STAThread al main dell'applicazione
aaa
12/06/12 7:29
piter123
eheh, hai detto niente per uno come me. Ho provato a leggere un pò in giro ma invece di semplificare mi sono ancora di più incasinato.
Dunque il problema nasce dalla seguente riga :
Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf getMessage)
ctThread.Start()
che da quello che capisco reinderizza la risposta del server alla routine getmessage, la quale poi gestisce la stringa di riposta dal server,
e per farlo cambia in qualche modo il threading che poi fà andare in conflitto l'oggetto COM.
Tu mi dici di aggiungere l'attributo STAThread al main dell'applicazione, posso chiederti gentilmente un esempio ?
Grazie
aaa
12/06/12 8:14
piter123
mi viene fuori questo ma continua ad andarmi in crash
Imports System.Threading
Public Class F_Base
Private Property ecGraphOcx As Threading.ThreadStart
Private Sub F_Base_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim t = New Threading.Thread(ecGraphOcx)
t.SetApartmentState(ApartmentState.STA)
t.Start()
End Sub
End Class
aaa
12/06/12 8:55
piter123
.
Ultima modifica effettuata da piter123 13/06/12 7:46
aaa