Zum Inhalt springen

Fenster friert ein beim Portscan


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe ein kleines Problem. Und zwar bin ich gerade dabei einen Portscanner zu programmieren was soweit auch klappt. Jedoch habe ich z.Z. das Problem, dass die Anwendung einfriert solange das Programm am scannen ist.

Die Methode für den Portscan liegt in der selben Klasse wie die OnLoad-Methode von meinem Programm (sprich: ich habe keine ausgelagerte Klasse) und ich muss der Methode insgesamt drei Parameter übergeben.

Ich habe schon folgendes versucht:

* ParameterizedThreadStart

* normalen Threadaufruf

* Methode ausgelagert, Getter und Setter erstellt für die Parameter und versucht über den Thread das Objekt zu übergeben.

Leider verstehe ich das Thema Threading nicht so ganz. Könntet ihr mir da weiterhelfen oder habt ihr andere Ideen wie ich das lösen könnte damit das Programm nicht einfriert?

Achja, das Problem beim Auslagern in eine andere Klasse ist die, dass ich aus der Methode noch auf eine Progressbar zugreife. Da habe ich es bisher auch noch nicht hinbekomme auf eine Progressbar oder anderes aus einer fremden Klasse zuzugreifen.

Wäre super wenn ihr mri weiterhelfen könntet!

Geschrieben

Wie du ja schon rausgefunden hast lässt sich das per Multithreading lösen. Die einfachste Möglichkeit dazu unter .Net bietet im Moment der Backgroundworker. Das ist ein unsichtbare Control den du auf deine Form ziehen kannst und womit du einfach einen zweiten Thread laufen lassen kannst.

Auf die Controls in deiner Form (Progressbar) kannst du nicht einfach so aus einem anderem Thread zugreifen, das musst du per Invoke lösen.

Wenn du mal nach den beiden Dingen suchst solltest du genügend Beispiele finden

Geschrieben

So das mit dem Backgroundworker habe ich hinbekommen nur verstehe ich nicht ganz wie ich jetzt mit Invoke meine Progressbar ansprechen kann. Ich hatte schon nach "C# invoke" gegoogelt aber diese Artikel die dort dann erscheinen sidn nicht ganz klar für mich.

Könntet ihr mir weiter helfen?

Geschrieben

Sorry aber ich versteh es nicht. Ich möchte doch z.B. lediglich auf ein Label oder so zugreifen können und dann sagen können

meinLabel.Text = "Hier mein Text";

aber ich verstehe nicht warum da "new DisplayResultDelegate(DisplayResult),Text)" u.s.w. steht. Ich möchte ja nicht einfach nur kopieren sondern auch verstehen!

Und ich greife daraus aus dem Event "backgroundWorker1_DoWork" zu.

Geschrieben

Und der erste Wert den ich in den Klammern nach Invoke eingebe ist meine Methode die es für mich regelt und der zweite Wert ist dann jeweils z.B. mein Text oder wenn ich eine Progressbar hab meine Integerzahl?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...