public static bool Wait(object obj, int millisecondsTimeout, bool exitContext) {
try {
- if (exitContext) SynchronizationAttribute.ExitContext ();
+ if (exitContext) {
+#if MONOTOUCH
+ throw new NotSupportedException ("exitContext == true is not supported");
+#else
+ SynchronizationAttribute.ExitContext ();
+#endif
+ }
return Wait (obj, millisecondsTimeout);
}
finally {
public static bool Wait(object obj, TimeSpan timeout, bool exitContext) {
try {
- if (exitContext) SynchronizationAttribute.ExitContext ();
+ if (exitContext) {
+#if MONOTOUCH
+ throw new NotSupportedException ("exitContext == true is not supported");
+#else
+ SynchronizationAttribute.ExitContext ();
+#endif
+ }
return Wait (obj, timeout);
}
finally {
}
}
-#if NET_4_0 || MOONLIGHT
+#if NET_4_0
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern static void try_enter_with_atomic_var (object obj, int millisecondsTimeout, ref bool lockTaken);
try_enter_with_atomic_var (obj, millisecondsTimeout, ref lockTaken);
}
+#endif
+
+#if NET_4_5
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ extern static bool Monitor_test_owner (object obj);
+
+ public static bool IsEntered (object obj)
+ {
+ return Monitor_test_owner(obj);
+ }
#endif
}
}