Listing 1: A synchronous Web service call

//Sample Web Service

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace Test_WebService
{
  public class Users :
               System.Web.Services.WebService
  {
    public Users()
    {
      InitializeComponent();
    }

    //auto gen code here...

    [WebMethod]
    public DataSet GetUsers(string sFirstName, string sLastName)
    {
      //CODE HERE TO RETURN
      //USERS MATCHING CRITERIA
    }
  }
}


Listing 1: PART 2 Calling the Web service

//Sample Synchronous Web Service Call
//From a Windows Application

// MyWebService is the name IÕve given my web
//reference in my Windows application
MyWebService.Users MyUsers;
MyUsers = new MyWebService.Users();
DataSet ds = MyUsers.GetUsers(tbFirstName.Text, tbLastName.Text);

Listing 2: An asynchronous callback method

private void GetUsersCallback(IAsyncResult ar)
{
  MyWebService.Users tempUsers;
  tempUsers = (MyWebService.Users)ar.AsyncState;
  DataSet ds = tempUsers.EndGetUsers(ar);
}

Listing 3: Making the asynchronous call

with the callback technique
MyWebService.Users MyUsers;
MyUsers = new MyWebService.Users();
AsyncCallback MyCallback;
MyCallback = new AsyncCallback(GetUsersCallback);
IAsyncResult MyResult;
MyResult = MyUsers.BeginGetUsers(tbFirstName.Text, tbLastName.Text, MyCallback, MyUsers);

Listing 4: Aborting your asynchronous web method call

if(MyResult != null)
  ((WebClientAsyncResult)MyResult).Abort();

Listing 5: An asynchronous Web service call 

Using the WaitHandle technique
MyWebService.Users MyUsers;
MyUsers = new MyWebService.Users();
IAsyncResult MyResult;
MyResult = MyUsers.BeginGetUsers(tbFirstName.Text, tbLastName.Text, null, null);

//HERE IS WHERE YOU WOULD PUT ANY CODE YOU NEED
//TO PERFORM SOME ACTION ON THE CLIENT WHILE
//THE WEB SERVICE GOES TO WORK

WaitHandle MyWaitHandle = MyResult.AsyncWaitHandle;
MyWaitHandle.WaitOne();
DataSet ds = MyUsers.EndGetUsers(MyResult);