// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
-
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
{
public class SynchronizationContext
{
+ bool notification_required;
+
[ThreadStatic]
static SynchronizationContext currentContext;
public static SynchronizationContext Current
{
- get { return currentContext; }
+ get {
+#if NET_2_1
+ if (currentContext == null)
+ currentContext = new SynchronizationContext ();
+#endif
+ return currentContext;
+ }
}
public virtual SynchronizationContext CreateCopy ()
return new SynchronizationContext (this);
}
- [MonoTODO]
public bool IsWaitNotificationRequired ()
{
- throw new NotImplementedException ();
+ return notification_required;
}
- [MonoTODO]
public virtual void OperationCompleted ()
{
- throw new NotImplementedException ();
}
- [MonoTODO]
public virtual void OperationStarted ()
{
- throw new NotImplementedException ();
}
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 static void SetSynchronizationContext (SynchronizationContext syncContext)
{
- throw new NotImplementedException ();
+ currentContext = syncContext;
+ }
+
+#if NET_2_1
+ [Obsolete]
+ public static void SetThreadStaticContext (SynchronizationContext syncContext)
+ {
+ currentContext = syncContext;
}
+#endif
[MonoTODO]
protected void SetWaitNotificationRequired ()
{
+ notification_required = true;
throw new NotImplementedException ();
}
}
}
}
-
-#endif