Пример #1
0
        }     //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()
Пример #2
0
    }//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()