同步执行模式,是指语句在同步执行模式下,将始终保持对程序流的控制,直至程序结束。例如查询操作,客户机上的应用程序在向服务器发出查询操作的指令后,将一直等待服务器将查询结果返回客户机端后,才继续进行下一步操作;
异步执行模式,是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同。例如查询操作,客户机上的应用程序在向服务器发出了查询操作的指令后,将立刻执行查询语句的下一条语句,而不需要等到服务器将查询结果返回客户机端后,才继续进行下一步操作。
1、需要異步執行的方法
public string RunDosCommand(string pCompID, string pFactID, string pDTS, string pDTE, out string sResult)
{
string strComm = GetItem_Value("DOS", "Rgui");
if (strComm == "")
sResult="";
strComm = "\"" + strComm + "\"";
strComm += " -q --no-save --no-res
tore --args";
strComm += " " + pCompID + " " + pFactID;
strComm += " " + pDTS + " " + pDTE;
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = false;
process.Start();
process.StandardInput.WriteLine(strComm);
process.StandardInput.WriteLine("exit");
sResult= process.StandardOutput.ReadToEnd();
return sResult;
}
2、聲明委托
private delegate string RunDosDelegate(string pCompID, string pFactID, string pDTS, string pDTE, out string sResult);//聲
明RunDosDelegate委托
3、異步
private void MyAsyncCallBack(IAsyncResult iAR)
{
string sResult=string.Empty;
RunDosDelegate runDoc = (RunDosDelegate)iAR.AsyncState;
runDoc.EndInvoke(out sResult,iAR);
}
4、執行方法
public string RunDos(string pCompID, string pFactID, string pDTS, string pDTE, out string sResult)
{
RunDosDelegate runDos = new RunDosDelegate(RunDosCommand);//設用委托
AsyncCallback ac = new AsyncCallback(MyAsyncCallBack);//異步呼叫
IAsyncResult iAResult = runDos.BeginInvoke(pCompID, pFactID, pDTS, pDTE, out sResult , ac, runDos);
return sResult;
}