Oppure

Loading
06/05/10 20:30
Danyez
Salve, gente !

Ho scritto un Port Scanner completamente funzionante, ma mi sono imbattuto in un "grosso" problema.

Come ogni Port Scanner, tento la connessione tramite Socket all'IP (127.0.0.1 poichè lo utilizzo sul mio pc) e ad una determinata porta (da 0 in poi, incrementa ad ogni "giro" :-P).


Il codice, dopo aver tentato la connessione (in un timer con Interval 1) controlla se la connessione è riuscita (If tcpClient.Connected = True). Se è riuscita aggiunge la porta ad una Lista.

Il problema è che ogni connessione che fa ... mi si blocca per qualche istante la form, rallentando anche una eventuale selezione (ad esempio dello Stop Scan).

Avevo pensato al Multithreading, ma non mi sembra una buona idea .. avevo pensato di farlo gestire ad un altro Form, ma non ottengo risultati ... quindi mi affido a Voi :rofl:


Vi prego, aiutatemi <.<
aaa
06/05/10 22:06
nessuno
Il multithreading era la cosa giusta.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
08/05/10 13:36
Bl4ck3rk1ll
Postato originariamente da nessuno:

Il multithreading era la cosa giusta.


Ha ragione :k:
aaa
04/06/10 13:01
Danyez
Postato originariamente da nessuno:

Il multithreading era la cosa giusta.



Beeene .. allora faccio una domanda diretta diretta.

Come superare il problema del Cross-threading ?
aaa
04/06/10 15:45
nessuno
Postato originariamente da Danyez:

Postato originariamente da nessuno:

Il multithreading era la cosa giusta.



Beeene .. allora faccio una domanda diretta diretta.

Come superare il problema del Cross-threading ?


Non è tanto diretta diretta ... cosa intendi?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
04/06/10 16:12
Il Totem
Postato originariamente da Danyez:
Beeene .. allora faccio una domanda diretta diretta.

Come superare il problema del Cross-threading ?


Al posto di eseguire il codice nel thread diverso, invochi dinamicamente un metodo tramite Invoke dal form principale. Esempio:
Public Delegate Sub SampleCode()

Private Sub DoSomething()
   'Codice che lancerebbe un'eccezione cross-thread
End Sub

'Ammettiamo che questa subb sia eseguita nel thread separato
Private Sub Thread_Work()
   'Invoca il metodo puntato dal delegate passato come parametro
   Me.Invoke(New SampleCode(AddressOf DoSomething))
End Sub
aaa
04/06/10 18:27
Danyez
Postato originariamente da Il Totem:

Postato originariamente da Danyez:
Beeene .. allora faccio una domanda diretta diretta.

Come superare il problema del Cross-threading ?


Al posto di eseguire il codice nel thread diverso, invochi dinamicamente un metodo tramite Invoke dal form principale. Esempio:
Public Delegate Sub SampleCode()

Private Sub DoSomething()
   'Codice che lancerebbe un'eccezione cross-thread
End Sub

'Ammettiamo che questa subb sia eseguita nel thread separato
Private Sub Thread_Work()
   'Invoca il metodo puntato dal delegate passato come parametro
   Me.Invoke(New SampleCode(AddressOf DoSomething))
End Sub


Ti ho contattato via MP,
ho problemi con il Timer e davvero non so più cosa fare.
aaa
06/06/10 14:04
Il Totem
Semplicemente hai inizializzato un nuovo thread, e poi hai usato il timer pensando che il solo fatto di creare un thread facesse in modo che tutto il codice venisse eseguito in esso. Ma non funziona così. Ti ho risposto opportunamente.
aaa