Exemplo n.º 1
0
 public static Original::Thread ___ctor_newobj(Original::ThreadStart start, int size)
 {
     return(Helper.ConstructThread <Original::ThreadStart>(
                delegate(Original::ThreadStart delStart) { return new Original::Thread(delStart, size); },
                start,
                Helper.WrapThreadStart
                ));
 }
Exemplo n.º 2
0
 public static Original::ThreadStart WrapThreadStart(Original::ThreadStart del, ClrSyncManager manager)
 {
     return(delegate()
     {
         try
         {
             Exception exception = null;
             manager.ThreadBegin(Original::Thread.CurrentThread);
             MChessChess.LeaveChess();
             try
             {
                 CheckThreadReadyForMonitoring();
                 del();
             }
             catch (Exception e) // catch recoverable exception in user code
             {
                 exception = e;
             }
             MChessChess.EnterChess();
             if (manager.BreakDeadlockMode)
             {
                 MChessChess.WakeNextDeadlockedThread(false, true);
             }
             else if (exception == null)
             {
                 manager.ThreadEnd(Original::Thread.CurrentThread);
             }
             else
             {
                 manager.Shutdown(exception);
             }
         }
         catch (Exception e) // catch fatal exception in our code
         {
             manager.Shutdown(e);
         }
     });
 }