Monitor
Те саме що Lock, але з можливістю продовжити роботу після помилки
private static object locker = new object();
static void Main(string[] args)
{
for (int i = 0; i < 6; i++)
{
// new Thread(F1).Start();
Task.Run(() => F1());
}
Console.ReadKey();
}
public static void F1()
{
try
{
Monitor.Enter(locker);
Console.WriteLine("START> " + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
throw new Exception();
Console.WriteLine("END " + Thread.CurrentThread.ManagedThreadId); //???
}
catch (Exception e)
{
// error logger
}
finally {
Monitor.Exit(locker);
}
}
START> 11
START> 12
START> 13
START> 14
START> 16
START> 18