2 // System.Runtime.Remoting.Messaging/AsyncResult.cs
5 // Joe Shaw (joe@ximian.com)
6 // Martin Baulig (martin@gnome.org)
7 // Dietmar Maurer (dietmar@ximian.com)
8 // Duncan Mak (duncan@ximian.com)
10 // (C) 2001 Ximian, Inc. http://www.ximian.com
14 using System.Threading;
15 using System.Runtime.CompilerServices;
17 namespace System.Runtime.Remoting.Messaging {
19 public class AsyncResult : IAsyncResult, IMessageSink {
23 object async_delegate;
27 bool endinvoke_called;
28 MonoMethodMessage call_message;
29 IMessageCtrl message_ctrl;
30 IMessage reply_message;
32 public virtual object AsyncState
39 public virtual WaitHandle AsyncWaitHandle
46 public virtual bool CompletedSynchronously
49 return sync_completed;
53 public virtual bool IsCompleted
60 public bool EndInvokeCalled
63 return endinvoke_called;
66 endinvoke_called = value;
70 public virtual object AsyncDelegate
73 return async_delegate;
77 public IMessageSink NextSink {
83 public virtual IMessageCtrl AsyncProcessMessage (IMessage msg, IMessageSink replySink)
86 throw new NotSupportedException ();
89 public virtual IMessage GetReplyMessage()
94 public virtual void SetMessageCtrl (IMessageCtrl mc)
99 internal void SetCompletedSynchronously (bool completed)
101 sync_completed = completed;
104 internal IMessage EndInvoke ()
107 return reply_message;
110 public virtual IMessage SyncProcessMessage (IMessage msg)
115 NativeEventCalls.SetEvent_internal (handle.Handle);
116 // TODO: invoke callback
121 internal MonoMethodMessage CallMessage
123 get { return call_message; }
124 set { call_message = value; }