views:

6

answers:

0

Hi All,

I was going through the proxy class which is generated using wsdl.exe found the asyncmethod like BeginAsynXXX() and EndAsyncXXX(). i understood how to utilize them on Windows application but i was wondering how can we use them in Web Application built using asp.net

here is the code for web service client build as windows application.can any tell me how we can do this with web application.

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

}