Mit C-Sharp aus Thread auf Methode zugreifen
Hallo zusammen,
ich habe hier schon Bissspuren in meinem Schreibtisch, weil ich hier verzweifle:
In einem Background-Worker wird eine Verbindung zu einem Server hergestellt, die dauerhaft besteht und worüber erstmal nur Daten empfangen werden.
Beim Empfang von Daten soll dann eine Methode aufgerufen werden, die irgendwas mit den empfangenen Daten anstellt, in ein Dictionary schreibt und evtl. einer Listbox in der Form Daten hinzufügt.
Es geht solange alles gut, wie die Listbox in Ruhe gelassen wird. Dann schreit mich Visual Studio an, dass das nicht der gleiche Thread wäre und ich möge das doch bitte Threadsafe ausführen.
Prinzipiell keine schlechte Idee, hier kommt jetzt mein Problem:
Wie kann ich aus einem Thread heraus eine Methode mit Parametern aufrufen?
Ohne geht es ganz wunderbar mit einem neuen Thread, aber nutze ich ParameterizedThreadStart kann ich bloß ein Objekt übergeben und da stehe ich irgendwie wie der berühmte Ochs vorm Berg.
Bisher habe ich es so gelöst, dass ich ein globales Objekt erstellt habe, über das ich eine Methode aufrufe und vorher immer fleißig Variablen setzen muss, die dann in der aufgerufenen Methode genutzt werden können.
Das ist aber a) total Banane und b) muss es doch eine einfachere/elegantere/nutzbarere Möglichkeit geben?
Kann ich eventuell aus dem Background-Worker heraus ein Event auslösen, was der gesamte Prozess mitbekommt?
Dann würde ich ja eher das benutzen, aber da ich das noch nie gemacht habe und die Microsoft-Dokumentation eher wenig hilfreich ist wollte ich das jetzt nicht auf gut Dünken probieren.
Danke schonmal!
Max
ich habe hier schon Bissspuren in meinem Schreibtisch, weil ich hier verzweifle:
In einem Background-Worker wird eine Verbindung zu einem Server hergestellt, die dauerhaft besteht und worüber erstmal nur Daten empfangen werden.
Beim Empfang von Daten soll dann eine Methode aufgerufen werden, die irgendwas mit den empfangenen Daten anstellt, in ein Dictionary schreibt und evtl. einer Listbox in der Form Daten hinzufügt.
Es geht solange alles gut, wie die Listbox in Ruhe gelassen wird. Dann schreit mich Visual Studio an, dass das nicht der gleiche Thread wäre und ich möge das doch bitte Threadsafe ausführen.
Prinzipiell keine schlechte Idee, hier kommt jetzt mein Problem:
Wie kann ich aus einem Thread heraus eine Methode mit Parametern aufrufen?
Ohne geht es ganz wunderbar mit einem neuen Thread, aber nutze ich ParameterizedThreadStart kann ich bloß ein Objekt übergeben und da stehe ich irgendwie wie der berühmte Ochs vorm Berg.
Bisher habe ich es so gelöst, dass ich ein globales Objekt erstellt habe, über das ich eine Methode aufrufe und vorher immer fleißig Variablen setzen muss, die dann in der aufgerufenen Methode genutzt werden können.
Das ist aber a) total Banane und b) muss es doch eine einfachere/elegantere/nutzbarere Möglichkeit geben?
Kann ich eventuell aus dem Background-Worker heraus ein Event auslösen, was der gesamte Prozess mitbekommt?
Dann würde ich ja eher das benutzen, aber da ich das noch nie gemacht habe und die Microsoft-Dokumentation eher wenig hilfreich ist wollte ich das jetzt nicht auf gut Dünken probieren.
Danke schonmal!
Max
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120260
Url: https://administrator.de/forum/mit-c-sharp-aus-thread-auf-methode-zugreifen-120260.html
Ausgedruckt am: 17.04.2025 um 18:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
das funktionniert mittels Delegaten (eng. delegate)-
Link MSDN
Da muss Du dich aber durchlesen. Ist ziemlich umfangreich.
mfG
das funktionniert mittels Delegaten (eng. delegate)-
Link MSDN
Da muss Du dich aber durchlesen. Ist ziemlich umfangreich.
mfG