zoukankan      html  css  js  c++  java
  • 如何:使用回调方法实现异步 Web 服务客户端

    using System;
    using System.Runtime.Remoting.Messaging;
    using MyFactorize;

    class TestCallback
     {          
          public static void Main(){
                long factorizableNum = 12345;
                PrimeFactorizer pf = new PrimeFactorizer();

                //Instantiate an AsyncCallback delegate to use as a parameter
                //in the BeginFactorize method.
                AsyncCallback cb = new AsyncCallback(TestCallback.FactorizeCallback);

              // Begin the Async call to Factorize, passing in our
              // AsyncCalback delegate and a reference
              // to our instance of PrimeFactorizer.
                IAsyncResult ar = pf.BeginFactorize(factorizableNum, cb, pf);
               
                // Keep track of the time it takes to complete the async call
                // as the call proceeds.
             int start = DateTime.Now.Second;
             int currentSecond = start;
             while (!ar.IsCompleted){
                if (currentSecond < DateTime.Now.Second) {
                      currentSecond = DateTime.Now.Second;
                      Console.WriteLine("Seconds Elapsed..." + (currentSecond - start).ToString() );
                }
             }
             // Once the call has completed, you need a method to ensure the
             // thread executing this Main function
             // doesn't complete prior to the call-back function completing.
             Console.Write("Press Enter to quit");
             int quitchar = Console.Read();
          }
          // Set up a call-back function that is invoked by the proxy class
          // when the asynchronous operation completes.
          public static void FactorizeCallback(IAsyncResult ar)
          {
              // You passed in our instance of PrimeFactorizer in the third
              // parameter to BeginFactorize, which is accessible in the
              // AsyncState property.
              PrimeFactorizer pf = (PrimeFactorizer) ar.AsyncState;
              long[] results;

              // Get the completed results.
                results = pf.EndFactorize(ar);
             
              //Output the results.
                Console.Write("12345 factors into: ");
                int j;
                for (j = 0; j<results.Length;j++){
                      if (j == results.Length - 1)
                          Console.WriteLine(results[j]);
                      else
                          Console.Write(results[j] + ", ");
                }
          }
    }

  • 相关阅读:
    第七次会议记录
    第六次会议记录
    高老师有点可爱队 Alpha冲刺阶段博客目录
    开心括号(栈)
    Codeforces Round #696 (Div. 2)
    OLE和TLE的不同
    Educational Codeforces Round 102 (Rated for Div. 2)
    关于位运算新知
    牛客小白月赛31
    关于cin和getline读入字符串
  • 原文地址:https://www.cnblogs.com/wzyexf/p/389750.html
Copyright © 2011-2022 走看看