XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



Diverses / Das Beispiel cs_cons_Threading / Synchronisierte Aufrufe mit Object-Lock

Synchronisierte Aufrufe mit Object-Lock

Synchronisierte Aufrufe mit Object-Lock

➪ Im folgenden Beispiel wird ein Objekt oLock durch lock (oLock) geblockt: Nach Beendigung des Locking wird dieses Lock wieder aufgehoben und kann erneut geblockt werden.


#region Object Lock
static object oLock = new object();
private static void schreibeDatei_Lock()
{
  lock (oLock)
  {
    using (var sw = new StreamWriter(@"C:\TEST\Locktest.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("Lock: Die Datei wurde geschrieben");
  }      
}
/// <summary>Liest Werte aus einer Datei</summary>
private static void liesDatei_Lock()
{
  lock (oLock)
  {
    string zeile = "";
    using (var sr = new StreamReader(@"C:\TEST\Locktest.txt"))
    {
      while (!sr.EndOfStream) zeile = sr.ReadLine();
      sr.Close();
      Console.WriteLine($"Lock: {zeile}");
    }
    Console.WriteLine("Lock: Die Datei wurde gelesen");
  }
}
/// <summary>Die Methoden werden via Lock eines Objekts aufgerufen</summary>
public static void Object_lock()
{
  Thread t2 = new Thread(liesDatei_Lock);
  Thread t1 = new Thread(schreibeDatei_Lock);
  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_Threading4.html