C#.NET * C++ * JAVASCRIPT * PYTHON * DIVERSES
XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT



C#.NET / Das Beispiel cs_cons_Threading / Synchronisierte Aufrufe mit Monitor

Synchronisierte Aufrufe mit Monitor

Synchronisierte Aufrufe mit Monitor

➪ Auch mit der Klasse Monitor ist eine Synchronisierung von Threads möglich.


#region Monitor
static object oMonitor = new object();
private static void schreibeDatei_Monitor()
{      
  Monitor.Enter(oMonitor);
  using (var sw = new StreamWriter(@"C:\TEST\Monitortest.txt"))
  {
    long sum = 0;
    for (int i = 0; i < 1000001; i++)
    {
      sum += i;
      sw.WriteLine($"{i,15:N0}{sum,30:N0}");
    }
    sw.Close();
  }
  Console.WriteLine("Monitor: Die Datei wurde geschrieben");
  Monitor.Exit(oMonitor);      
}
/// <summary>Liest Werte aus einer Datei</summary>
private static void liesDatei_Monitor()
{
  Monitor.Enter(oMonitor);      
  string zeile = "";
  using (var sr = new StreamReader(@"C:\TEST\Monitortest.txt"))
  {
    while (!sr.EndOfStream) zeile = sr.ReadLine();
    sr.Close();
    Console.WriteLine($"Monitor: {zeile}");
  }
  Console.WriteLine("Monitor: Die Datei wurde gelesen");
  Monitor.Exit(oMonitor);
}
/// <summary>Die Methoden werden via Mutex aufgerufen</summary>
public static void Monitor_enter()
{      
  Thread t2 = new Thread(liesDatei_Monitor);
  Thread t1 = new Thread(schreibeDatei_Monitor);
  t1.Start();
  t2.Start();
  Thread.Sleep(1000);
}
#endregion

wg / 5. April 2021



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/cs_Threading7.html