* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / corlib / System.Threading / SynchronizationContext.cs
index 0e81381e781df1c411d99c3542f7cce727b1022f..6ede32d76245ec724a7cf0fc8ec5a96a35de798e 100644 (file)
@@ -4,9 +4,7 @@
 // Author:
 //   Lluis Sanchez (lluis@novell.com)
 //
-// Copyright (C) Novell, Inc., 2004
-//
-
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -35,9 +33,10 @@ using System.Runtime.InteropServices;
 
 namespace System.Threading 
 {
-       [ComVisibleAttribute (false)]
        public class SynchronizationContext
        {
+               bool notification_required;
+
                [ThreadStatic]
                static SynchronizationContext currentContext;
                
@@ -59,35 +58,51 @@ namespace System.Threading
                {
                        return new SynchronizationContext (this);
                }
+
+               public bool IsWaitNotificationRequired ()
+               {
+                       return notification_required;
+               }
+
+               public virtual void OperationCompleted ()
+               {
+               }
+
+               public virtual void OperationStarted ()
+               {
+               }
                
                public virtual void Post (SendOrPostCallback d, object state)
                {
-                       d.BeginInvoke (state, null, null);
+                       ThreadPool.QueueUserWorkItem (new WaitCallback (d), state);
                }
                
                public virtual void Send (SendOrPostCallback d, object state)
                {
                        d (state);
                }
-               
+
+               [Obsolete ("does not exists anymore in 2.0 beta2")]
                public virtual void SendOrPost (SendOrPostCallback d, object state)
                {
                        Send (d, state);
                }
-
+               
                [MonoTODO]
-               public virtual void SendOrPost (SendOrPostCallback d, object state, ExecutionContext ec)
+               public static void SetSynchronizationContext (SynchronizationContext syncContext)
                {
                        throw new NotImplementedException ();
                }
-               
+
                [MonoTODO]
-               public static SynchronizationContextSwitcher SetSynchronizationContext (SynchronizationContext syncContext)
+               protected void SetWaitNotificationRequired ()
                {
+                       notification_required = true;
                        throw new NotImplementedException ();
                }
 
                [CLSCompliant (false)]
+               [PrePrepareMethod ()]
                public virtual int Wait (IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
                {
                        return WaitHelper (waitHandles, waitAll, millisecondsTimeout);
@@ -95,7 +110,8 @@ namespace System.Threading
 
                [MonoTODO]
                [CLSCompliant (false)]
-               [ReliabilityContract (Consistency.WillNotCorruptState, CER.MayFail)]
+               [ReliabilityContract (Consistency.WillNotCorruptState, Cer.MayFail)]
+               [PrePrepareMethod ()]
                protected static int WaitHelper (IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout)
                {
                        throw new NotImplementedException ();