CriticalSection's



  • Mich wunderts das die Hilfe nichts unter den Schlagwörtern "thread", "criticalsection" oder "sync" und ähnliches ausspuckt. Hat sich noch niemand an Threading gewagt? 🙂

    Das Threading an sich macht mir weniger probleme. Viel mehr suche ich das gegenstück zu den CriticalSections in .Net. Es kann ja nicht sein das es nur das Mutex gibt. Monitor scheint auch noch ein Sync-Objekt zu sein.

    Kann mir nicht vorstellen das es da nichts vergleichbares gibt. Ebenfalls such ich die Events. Fehlen auch irgendwie oder wurden gut versteckt 🙂

    Wenn wir schon grad dabei sind...Gibt es wircklich keine andere Möglichkeit als ein blödes work around der Thread-Funktion einen Parameter mit zugeben?



  • Events mach ich per

    Thread.Sleep

    und Thread.Interrupt



  • Was meinst du jetzt mit dem Workaround? Du hast so ziemlich alle Möglichkeiten. Du kannst ein object als Parameter angeben, dieses kann wiederum ein Array und damit alles mögliche sein.
    Du kannst dir auch eine Klasse für dein Problem schreiben, die evtl. Parameter als Datenelemente aufnimmt und per nicht-statischem delegate dann eine void foo() funktion dort starten. Das wäre so ungefähr der Java-Weg, per Konstruktor die Parameter festlegen und dann ne Methode run(), die aber mit den delegates in .Net auch anders heißen darf, starten.
    Oder du definierst ein delegate mit der gewünschten Signatur und machst BeginInvoke(), um das Ding asynchron aufzurufen. Den eigenen Thread kannst du ja innerhalb getten, falls du ihn brauchst. Hierbei sollte man dann aber wieder *irgendwann* EndInvoke() aus einem anderen Thread aufrufen, amsonsten greif lieber auf die ersten beiden Möglichkeiten zurück.



  • Du kannst ein object als Parameter angeben

    Wie kann man das denn machen? Wenn ich einen Thread erstelle, will der Konstruktor von System.Threading.Thread ein Objekt ThreadStart haben, dieses will im Konstruktor eine Methode haben, die leider keinen Parameter erlaubt:

    void threadFunc()

    Wo bitte hab ich da jetzt meinen Parameter? Oder gibbet noch ein anderes ThreadStart-Object das eine solche Funktion erlaubt

    void threadFunc(object sender)




Anmelden zum Antworten