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] + ", ");
                }
          }
    }

  • 相关阅读:
    04747_Java语言程序设计(一)_第7章_图形、图像与多媒体
    04747_Java语言程序设计(一)_第6章_图形界面设计(二)
    04747_Java语言程序设计(一)_第5章_图形界面设计(一)
    04747_Java语言程序设计(一)_第4章_数组和字符串
    04747_Java语言程序设计(一)_第3章_面向对象编程基础
    04747_Java语言程序设计(一)_第2章_运算和语句
    04747_Java语言程序设计(一)_第1章_Java语言基础
    记事本写hello world_Java
    Java安装根目录
    input标签不能设置height
  • 原文地址:https://www.cnblogs.com/wzyexf/p/389750.html
Copyright © 2011-2022 走看看