Acquire() { if (Unmanaged.WaitForSingleObject(this.hMutex, INFINITE) == ABANDONED) { Console.WriteLine("warning: mutex abandoned\n{0}", System.Environment.StackTrace); } this.owner = Thread.CurrentThread.ManagedThreadId; this.count += 1; return(this.count); }
TryAcquire() { int result = Unmanaged.WaitForSingleObject(this.hMutex, 0); if (result == TIMEOUT) { return(false); } if (result == ABANDONED) { Console.WriteLine("warning: mutex abandoned\n{0}", System.Environment.StackTrace); } this.owner = Thread.CurrentThread.ManagedThreadId; this.count += 1; return(true); }