c#委托异步实现

同步执行模式,是指语句在同步执行模式下,将始终保持对程序流的控制,直至程序结束。例如查询操作,客户机上的应用程序在向服务器发出查询操作的指令后,将一直等待服务器将查询结果返回客户机端后,才继续进行下一步操作;

异步执行模式,是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同。例如查询操作,客户机上的应用程序在向服务器发出了查询操作的指令后,将立刻执行查询语句的下一条语句,而不需要等到服务器将查询结果返回客户机端后,才继续进行下一步操作。

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;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值