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 )); }
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); } }); }