Laden...

Methode in anderem Thread ausführen

Erstellt von idontwantaname vor 15 Jahren Letzter Beitrag vor 15 Jahren 662 Views
I
idontwantaname Themenstarter:in
86 Beiträge seit 2006
vor 15 Jahren
Methode in anderem Thread ausführen

Hallo!

Ich versuche gerade zwei Threads zu synchronisieren, allerdings will mir das nicht so recht gelingen. Ich habe mir folgendes zu meinem Problem überlegt:

Ich habe einen Thread, in dem eine Netzwerkverbindung verarbeitet wird. Nun bekommt dieser Thread von verschiedenen anderen Threads Pakete, die er abschicken soll. Auf diese Pakete kommt eine Antwort zurück, die dem auftraggebenden Thread, der in der Zwischenzeit schläft, mitgeteilt werden sollte.

Nun dachte ich mir, ich verwende die System.Threading.Monitor-Klasse, mit der ich Objekte sperren kann. Ich dachte mir, dass ich im auftraggebenden Thread ein Objekt erzeuge, welches später auch das Antwortpaket enthalten wird. Nun sage ich dem Monitor, dass er dieses Objekt für den Verbindungsthread exklusiv sperren soll, bis in diesem das Antwortpaket angekommen und zugewiesen ist; dann wird die Sperre wieder aufgehoben. Währenddessen soll der andere Thread darauf warten, dass er Objekt verwenden kann.

Wie löse ich diese Problemstellung am besten?

mfg oli

3.971 Beiträge seit 2006
vor 15 Jahren

Verwende eine eigene Klasse, die das Byte[]-kapselt. Die Klasse hat auch eine Funktion zum Versenden. Diese fügt die Klasse in eine Queue-Klasse, die von einem weiteren Thread nacheinander abgearbeitet wird. Das warten des ersten Threads implementierst du mit einem Waithandle (ManualResetEvent).

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...