0

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

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

但现在我需要使用委托和 begininvoke 来做到这一点。

请有人可以帮助我或给我一些样本以供阅读。

谢谢

4

1 回答 1

2

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

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

异步委托编程示例

于 2013-02-21T18:38:53.693 回答