summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/Threading/AbandonedMutexException.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/src/System/Threading/AbandonedMutexException.cs')
-rw-r--r--src/mscorlib/src/System/Threading/AbandonedMutexException.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/mscorlib/src/System/Threading/AbandonedMutexException.cs b/src/mscorlib/src/System/Threading/AbandonedMutexException.cs
new file mode 100644
index 0000000000..6b4977fbc5
--- /dev/null
+++ b/src/mscorlib/src/System/Threading/AbandonedMutexException.cs
@@ -0,0 +1,85 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+//
+//
+// AbandonedMutexException
+// Thrown when a wait completes because one or more mutexes was abandoned.
+// AbandonedMutexs indicate serious error in user code or machine state.
+////////////////////////////////////////////////////////////////////////////////
+
+namespace System.Threading {
+
+ using System;
+ using System.Runtime.Serialization;
+ using System.Threading;
+ using System.Runtime.InteropServices;
+
+ [Serializable]
+ [ComVisibleAttribute(false)]
+ public class AbandonedMutexException : SystemException {
+
+ private int m_MutexIndex = -1;
+ private Mutex m_Mutex = null;
+
+ public AbandonedMutexException()
+ : base(Environment.GetResourceString("Threading.AbandonedMutexException")) {
+ SetErrorCode(__HResults.COR_E_ABANDONEDMUTEX);
+ }
+
+ public AbandonedMutexException(String message)
+ : base(message) {
+ SetErrorCode(__HResults.COR_E_ABANDONEDMUTEX);
+ }
+
+ public AbandonedMutexException(String message, Exception inner )
+ : base(message, inner) {
+ SetErrorCode(__HResults.COR_E_ABANDONEDMUTEX);
+ }
+
+ public AbandonedMutexException(int location, WaitHandle handle)
+ : base(Environment.GetResourceString("Threading.AbandonedMutexException")) {
+ SetErrorCode(__HResults.COR_E_ABANDONEDMUTEX);
+ SetupException(location,handle);
+ }
+
+ public AbandonedMutexException(String message,int location, WaitHandle handle)
+ : base(message) {
+ SetErrorCode(__HResults.COR_E_ABANDONEDMUTEX);
+ SetupException(location,handle);
+ }
+
+ public AbandonedMutexException(String message, Exception inner,int location, WaitHandle handle )
+ : base(message, inner) {
+ SetErrorCode(__HResults.COR_E_ABANDONEDMUTEX);
+ SetupException(location,handle);
+ }
+
+ private void SetupException(int location, WaitHandle handle)
+ {
+ m_MutexIndex = location;
+ if(handle != null)
+ m_Mutex = handle as Mutex;
+ }
+
+ protected AbandonedMutexException(SerializationInfo info, StreamingContext context) : base(info, context) {
+ }
+
+ public Mutex Mutex
+ {
+ get {
+ return m_Mutex;
+ }
+ }
+
+ public int MutexIndex
+ {
+ get{
+ return m_MutexIndex;
+ }
+ }
+
+ }
+}
+