异步调用方法

时间:2013-02-21 18:17:32

标签: c# asp.net asynchronous delegates begininvoke

这是我调用asyn函数的旧代码:

    public class Caller {

    public void Calculate(CalcParameters calcParameters, string sourceApp) {
        AsyncCaller caller = new AsyncCaller(_username, _password, new Token());
        caller.Calculated += new CalculatedHandler(OnCalculated);
        caller.calculate(sourceApp, calcParameters);
    }

    protected virtual void OnCalculated(object sender, CalculatedEventArgs e) {
        if (OnCalculatedEvent != null) OnCalculatedEvent(e);
    }

    public void calculate(string calcID, WebService.CalcParameters calcParams) {
        calculate(0, calcID, calcParams);
    }

    public void calculate(long callID, string calcID, WebService.CalcParameters calcParams) {
        try {
            lock(this) {
                Worker wsWorker = MakeCalculateWorker(callID, calcID, new OnCalculatedHandler(OnCalculated), calcParams);
                Thread wsThread = new Thread(new ThreadStart(wsWorker.calculate));
                wsThread.IsBackground = true;
                wsThread.Start();
            }
        } catch (Exception ex) {
            _log.WriteError(
            Assembly.GetExecutingAssembly().GetName().Name,
            this.GetType().Name,
            MethodBase.GetCurrentMethod().Name,
            _username,
            ex.Message);
            throw ex;
        }
    }
}

但现在我需要使用delegate和begininvoke来完成这个..

请有人帮我这个或者给我一些样本来阅读。

由于

1 个答案:

答案 0 :(得分:2)

这是一个MSDN示例,解释了如何使用异步委托。

通读它,但也要一步一步地完成它,就好像你是理解它的程序一样。

Asynchronous Delegates Programming Sample