异步调用方法

本文关键字:方法 调用 异步 | 更新日期: 2023-09-27 18:00:23

这是我调用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来完成此操作。。

请有人帮我做这件事,或者给我一些可以阅读的样本。

感谢

异步调用方法

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

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

异步委托编程示例