This article describes AsyncCallback, BackgroundWorker, and Asynchronous Method programming of web service through examples.
// 1. Handheld Program use AsyncCallback
// 2. Use AsyncCallback for winform Program
// 3. Use BackgroundWorker
// 4. Asynchronous Method Using web service
The following is an example.
UsingSystem;
UsingSystem. Collections. Generic;
UsingSystem. Linq;
UsingSystem. Text;
UsingSystem. Threading;
UsingSystem. ComponentModel;
UsingSystem. Windows. Forms;
UsingSystem. Xml;
UsingSystem. Xml. Linq;
NamespaceTestAPP
{
PublicclassEntity
{
PublicintOperatorID {get; set ;}
PublicstringOperatorName {get; set ;}
PublicstringBlock {get; set ;}
PublicstringFloor {get; set ;}
}
Public delegate Object Asyncdelegate ();
Public class CallBack
{
// 1. Handheld Program use AsyncCallback
Public delegate void taskstatusDel (objectStatusList );
Private void BindcboStatus (objectStatusList)
{
List <ManualTask. TaskStatus> _ taskstatus = newList <ManualTask. TaskStatus> ();
_ Taskstatus = StatusList asList <ManualTask. TaskStatus>;
ManualTask. TaskStatus_statusObj = newManualTask. TaskStatus ();
_ StatusObj. StatusCode = "";
_ StatusObj. StatusDesc = "";
_ Taskstatus. Insert (0, _ statusObj );
ComboBoxcboStatus = newComboBox ();
CboStatus. DataSource = _ taskstatus;
CboStatus. DisplayMember = "StatusDesc ";
CboStatus. ValueMember = "StatusCode ";
CboStatus. SelectedIndex =-1;
}
Private void CallbackHandheld (IAsyncResultar)
{
List <ManualTask. TaskStatus> _ taskstatus = newList <ManualTask. TaskStatus> ();
_ Taskstatus = _ taskService. EndGetTaskStatus (ar). ToList ();
This. BeginInvoke (newtaskstatusDel (BindcboStatus), _ taskstatus );
}
Private void BindTaskStatus (stringstatusCode)
{
ManualTask. RLDMSManualSendTaskServicetaskService = newManualTask. RLDMSManualSendTaskService ();
TaskService. BeginGetTaskStatus (statusCode, new AsyncCallback (CallbackHandheld), this );
}
// 2. Use AsyncCallback for winform Program
Object GetDriverList ()
{
ManualTask. RLDMSManualSendTaskServicetaskService = newManualTask. RLDMSManualSendTaskService ();
List <ManualTask. DriverEntity> driver = newList <ManualTask. DriverEntity> ();
Entity_entity = newEntity ();
_ Entity. OperatorID = 0;
_ Entity. OperatorName = "";
_ Entity. Block = "4á ";
_ Entity. Floor = "1 ¼ Ó ";
Driver = taskService. GetDriver (_ entity. OperatorID, _ entity. OperatorName, _ entity. Block, _ entity. Floor). ToList ();
Return driver;
}
Private void CallbackMethod (IAsyncResultar)
{
// Retrieve the delegate.
Asyncdelegate dlgt = (Asyncdelegate) ar. AsyncState;
// Call EndInvoke to retrieve the results.
List <ManualTask. DriverEntity> driver = newList <ManualTask. DriverEntity> ();
Driver = dlgt. EndInvoke (ar) asList <ManualTask. DriverEntity>;
MessageBox. Show ("End ");~~
}
Public void MainCallBack ()
{
Asyncdelegateisgt = newAsyncdelegate (GetDriverList );
AsyncCallbackacb = new AsyncCallback (CallbackMethod );
IAsyncResultar = isgt. BeginInvoke (acb, isgt );
MessageBox. Show ("Start ");~~
}
// 3. Use BackgroundWorker
PublicvoidMainMethod ()
{
BackgroundWorkerbackworker = newBackgroundWorker ();
Backworker. DoWork + = newDoWorkEventHandler (Method1 );
Backworker. RunWorkerCompleted + = newRunWorkerCompletedEventHandler (back_RunWorkerCompleted );
Entity_entity = newEntity ();
_ Entity. OperatorID = 0;
_ Entity. OperatorName = "";
_ Entity. Block = "4á ";
_ Entity. Floor = "1 ¼ Ó ";
Backworker. RunWorkerAsync (_ entity );
MessageBox. Show ("Start ");~~
}
Public void Method1 (objectsender, DoWorkEventArgse)
{
ManualTask. RLDMSManualSendTaskServicetaskService = newManualTask. RLDMSManualSendTaskService ();
List <ManualTask. DriverEntity> driver = newList <ManualTask. DriverEntity> ();
Entity_entity = newEntity ();
_ Entity = e. Argument asEntity;
Driver = taskService. GetDriver (_ entity. OperatorID, _ entity. OperatorName, _ entity. Block, _ entity. Floor). ToList ();
E. Result = driver;
}
~
Void back_RunWorkerCompleted (objectsender, RunWorkerCompletedEventArgs e)
{
If (e. Error! = Null)
Throwe. Error;
List <ManualTask. DriverEntity> driver = newList <ManualTask. DriverEntity> ();
Driver = e. Result as List <ManualTask. DriverEntity>;
MessageBox. Show ("OK ");~~
}
// 4. Asynchronous Method Using web service
Public void CallWebService ()
{
ManualTask. RLDMSManualSendTaskServicetaskService = newManualTask. RLDMSManualSendTaskService ();
Entity_entity = newEntity ();
_ Entity. OperatorID = 0;
_ Entity. OperatorName = "";
_ Entity. Block = "4 t ";
_ Entity. Floor = "1f ";
TaskService. GetDriverAsync (_ entity. OperatorID, _ entity. OperatorName, _ entity. Block, _ entity. Floor );
TaskService. GetDriverCompleted + = newTestAPP. ManualTask. GetDriverCompletedEventHandler (GetDriverCompleted );
// Driver = taskService. GetDriver (_ entity. OperatorID, _ entity. OperatorName, _ entity. Block, _ entity. Floor). ToList ();
MessageBox. Show ("Start ");~
}
// § ~~~~~¥Ó‰] ² z ~~k ~
Void GetDriverCompleted (objectsender, ManualTask. GetDriverCompletedEventArgse)
{
If (e. Error! = Null)
Throwe. Error;
List <ManualTask. DriverEntity> driver = newList <ManualTask. DriverEntity> ();
Driver = e. Result. ToList ();
MessageBox. Show ("Finish ");~~~ // Display the cürürü ª A ‰ U ¾ ¹ ¨ ú ~
}~
}
}