Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - System.Net.Sockets e componenti com
Forum - C# / VB.NET - System.Net.Sockets e componenti com

Avatar
piter123 (Normal User)
Pro


Messaggi: 145
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 18:40
Lunedì, 11/06/2012
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 :


piter123 ha allegato un file: err form.jpg (36740 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da piter123 il 11/06/2012 alle 18:43
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 22:05
Lunedì, 11/06/2012
basta aggiungere l'attributo STAThread al main dell'applicazione

PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 145
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 9:29
Martedì, 12/06/2012
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


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 9:43
Martedì, 12/06/2012

se usi un thread aggiuntivo devi crearlo in questo modo:

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim t = New Thread(MyThreadStartMethod)
  2. t.SetApartmentState(ApartmentState.STA)
  3. t.Start()


PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 145
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 10:14
Martedì, 12/06/2012
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

PM Quote
Avatar
piter123 (Normal User)
Pro


Messaggi: 145
Iscritto: 21/05/2008

Segnala al moderatore
Postato alle 10:55
Martedì, 12/06/2012
.

Ultima modifica effettuata da piter123 il 13/06/2012 alle 9:46
PM Quote