namespace System.Threading {
[Serializable]
-#if NET_2_0
public sealed class ExecutionContext : ISerializable {
-#else
- internal sealed class ExecutionContext : ISerializable {
-#endif
+#if !MOONLIGHT
private SecurityContext _sc;
+#endif
private bool _suppressFlow;
private bool _capture;
internal ExecutionContext (ExecutionContext ec)
{
+#if !MOONLIGHT
if (ec._sc != null)
_sc = new SecurityContext (ec._sc);
+#endif
_suppressFlow = ec._suppressFlow;
_capture = true;
}
return null;
ExecutionContext capture = new ExecutionContext (ec);
+#if !MOONLIGHT
if (SecurityManager.SecurityEnabled)
capture.SecurityContext = SecurityContext.Capture ();
+#endif
return capture;
}
}
// internal stuff
-
+#if !MOONLIGHT
internal SecurityContext SecurityContext {
get {
if (_sc == null)
}
set { _sc = value; }
}
-
+#endif
internal bool FlowSuppressed {
get { return _suppressFlow; }
set { _suppressFlow = value; }
ec.FlowSuppressed = false;
}
-#if NET_2_0
+
+#if !MOONLIGHT
[MonoTODO ("only the SecurityContext is considered")]
[SecurityPermission (SecurityAction.LinkDemand, Infrastructure = true)]
- public static void Run (ExecutionContext executionContext, ContextCallback callBack, object state)
+ public static void Run (ExecutionContext executionContext, ContextCallback callback, object state)
{
if (executionContext == null) {
throw new InvalidOperationException (Locale.GetText (
// FIXME: supporting more than one context (the SecurityContext)
// will requires a rewrite of this method
- SecurityContext.Run (executionContext.SecurityContext, callBack, state);
+ SecurityContext.Run (executionContext.SecurityContext, callback, state);
}
-#endif
+
public static AsyncFlowControl SuppressFlow ()
{
Thread t = Thread.CurrentThread;
t.ExecutionContext.FlowSuppressed = true;
return new AsyncFlowControl (t, AsyncFlowControlType.Execution);
}
+#endif
}
}