Frage nach Threadfunktionen/Klassen
-
Hallo, ich habe folgendes Problem:
Ich habe die Aufgabe bekommen ein Programm zu schreiben was einen oder mehreren Thread/s starten soll, nun ist nur noch die Frage wie ich sie dann erstens synchron laufen lasse und ob ich noch irgendwelche Namensräume lassen muss?
Schon mal im voraus Danke
MFG
Kapp Sparda
-
Syncron laufen lassen?
Namensräume?Was soll das sein?
-
Mit Synchron laufen lassen ist gemeint das man die Threads aufeinander abstimmt wann sie starten und wann sie aufhören. Da C# für mich Neuland ist, interressiert es mich nun was es da für Funktionen gibt mit denen man arbeiten kann.
Noch als Anmerkung: Ich arbeite mit SharpDevelop, weil ich praktisch dazu gezwungen bzw. System mässig daran gebunden bin.
Danke im Voraus
MfG Kapp.Sparda
Namensräume sind nach meiner Auffassung, wie ich es in einem Tutorial gelernt habe z.B.: "using system" oder ähnliche
-
Oh Sorry da fällt mir gerade was auf, das ist ja das Unterforum für C/C++. Da habe ich gleich die Frag ob mal bitte ein Moderator diesen Beitrag für mich verschieben könnte???
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C# und .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
ich finde fürn Anfänger nicht schlecht, auch die anderen Teile:
http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032340997
Gruss Alex
-
Servus,
schau dir aufjedenfall mal die Webcast an, schaden kann es nicht und suche mal nach folgenden Begriffen: "lock", "Mutex", "Monitor" im Zusammenhang von Threadsynchronisation.
Ich habe dir hier einfach mal ein kleines Beispiel mit lock erstellt:
using System; using System.Threading; namespace TestSync { class Writer { public void WriteSomething(string text) { lock(this) { for ( int i = 0; i < 10; i++ ) { Thread.Sleep(100); Console.Write(text); } } } } class ThreadSynchron { public static Writer writer = new Writer(); public static void ThreadOne() { writer.WriteSomething("1"); } public static void ThreadTwo() { writer.WriteSomething("2"); } [STAThread] static void Main(string[] args) { Thread one = new Thread( new ThreadStart(ThreadOne) ); Thread two = new Thread( new ThreadStart(ThreadTwo) ); one.Start(); two.Start(); Console.ReadLine(); } } }
Hier wird verhindert das beide Threads gleichzeitig auf die WriteSomething Methode zugreifen, durch die kleine lock Anweisung. "lock" macht im Endeffekt nichts anderes als ein Monitor Objekt zu benutzen und intern ein try...finally Block einzufügen. Das hat den Vorteil, dass wenn ein Fehler auftritt, er nicht beim Monitor.Enter() hängen bleibt und der andere Thread bis in die unendlichen rumgammelt. Ist jetzt vielleicht ein bisschen zuviel des Guten aber schaue dir einfach mal die Begriffe an die ich dir oben genannt habe, dann kommst du auch ganz schnell dahinter wie soetwas funktioniert....
mfg
Hellsgore
-
Danke für den Beitrag, habe es ausprobiert und funkt einwandfrei. Auch der Tipp mit Mutex und Monitor war echt ziemlich nützlich. Ich habe schon auf anderen Seiten was mit lock gefunden aber das war so kryptisch das man da als Anfänger sich nich viel rausdenken kann!
MfG
Kapp.Sparda