Backgroundworker调用DLL发送停止事件

时间:2012-11-29 14:40:33

标签: c# asynchronous backgroundworker

我有一个工具可以将GUI与我的Workingengine分开。他们是不同的项目。也许我想稍后将其用于控制​​台应用程序。 我在BackgroundWorker中从GUI调用Engine(它是一个dll):

    _worker = new BackgroundWorker();
    _worker.WorkerSupportsCancellation = true;
    _worker.DoWork += DoWork;
    _worker.RunWorkerAsync();
    ...


    private void DoWork(object sender, DoWorkEventArgs e)
    {
        Engine.Engine engine = new Engine.Engine(someParams);
        engine.Log += OnLog; //Here I receive Logging to display in GUI
        engine.Start(); //Runs the logic
    }

我现在想要的是,实现一个停止按钮。引擎可能会运行很多并在数据库中进行事务(如果单击停止,我想回滚)。

我可以通过将backgroundworker传递给我的dll然后检查CancellationPending来实现。有没有不同的方法呢?我想重用其他项目的代码,因此我不想通过Backgroundworker ...

什么会很好:

引擎有一个停止事件,它将全局标志设置为“取消”,我可以在代码中定期检查。 这个事件我想从GUI开始。

我希望你能理解我的意思: - )

提前感谢您的帮助!

0 个答案:

没有答案