} //ClientInvoke /// <summary> /// Used by AsyncClient.Run() to invoke the proxy method repeatedly. /// </summary> /// <param name="obj"></param> public void ClientInvokeAsync(object RemoteObj) { try { if (RemoteObj == null) { Console.WriteLine("Could not locate server."); return; }//if switch (m_CallConv) { case CallingConvention.ByRef: { AsyncCallback cb = new AsyncCallback(ByRefCallBack); HelloServerByRef hsbr = (HelloServerByRef)RemoteObj; ByRefDelegate del = new ByRefDelegate(hsbr.HelloMethod); ForwardByRef fbr = new ForwardByRef(); IAsyncResult ar = del.BeginInvoke("Calling ByRef async", fbr, cb, null); lock (this) { m_ResetEvent = new ManualResetEvent(false); }//lock m_ResetEvent.WaitOne(); if (m_ThreadNumber > 0) { Console.WriteLine("From thread {0}", m_ThreadNumber.ToString()); } //if break; } //case case CallingConvention.ByVal: { AsyncCallback cb = new AsyncCallback(ByValCallBack); HelloServerByVal hsbv = (HelloServerByVal)RemoteObj; ByValDelegate del = new ByValDelegate(hsbv.HelloMethod); ForwardByVal fbv = new ForwardByVal(); IAsyncResult ar = del.BeginInvoke("Calling ByVal async", fbv, cb, null); lock (this) { m_ResetEvent = new ManualResetEvent(false); }//lock m_ResetEvent.WaitOne(); if (m_ThreadNumber > 0) { Console.WriteLine("From thread {0}", m_ThreadNumber.ToString()); } //if break; } //case } //switch } //try catch (Exception e) { Console.WriteLine("Exception in Client.ClientInvokeAsync(): {0}", e.ToString()); System.Diagnostics.Process.GetCurrentProcess().Kill(); } //catch return; } //ClientInvokeAsync()
}//ClientInvoke /// <summary> /// Used by AsyncClient.Run() to invoke the proxy method repeatedly. /// </summary> /// <param name="obj"></param> public void ClientInvokeAsync(object RemoteObj) { try { if (RemoteObj == null) { Console.WriteLine("Could not locate server."); return; }//if switch (m_CallConv) { case CallingConvention.ByRef: { AsyncCallback cb = new AsyncCallback(ByRefCallBack); HelloServerByRef hsbr = (HelloServerByRef)RemoteObj; ByRefDelegate del = new ByRefDelegate(hsbr.HelloMethod); ForwardByRef fbr = new ForwardByRef(); IAsyncResult ar = del.BeginInvoke("Calling ByRef async", fbr, cb, null); lock(this) { m_ResetEvent = new ManualResetEvent(false); }//lock m_ResetEvent.WaitOne(); if (m_ThreadNumber > 0) { Console.WriteLine("From thread {0}", m_ThreadNumber.ToString()); }//if break; }//case case CallingConvention.ByVal: { AsyncCallback cb = new AsyncCallback(ByValCallBack); HelloServerByVal hsbv = (HelloServerByVal)RemoteObj; ByValDelegate del = new ByValDelegate(hsbv.HelloMethod); ForwardByVal fbv = new ForwardByVal(); IAsyncResult ar = del.BeginInvoke("Calling ByVal async", fbv, cb, null); lock(this) { m_ResetEvent = new ManualResetEvent(false); }//lock m_ResetEvent.WaitOne(); if (m_ThreadNumber > 0) { Console.WriteLine("From thread {0}", m_ThreadNumber.ToString()); }//if break; }//case }//switch }//try catch (Exception e) { Console.WriteLine("Exception in Client.ClientInvokeAsync(): {0}", e.ToString()); System.Diagnostics.Process.GetCurrentProcess().Kill(); }//catch return; }//ClientInvokeAsync()