0

我有一个将 GUI 与工作引擎分开的工具。它们是不同的项目。也许我想稍后将它用于控制台应用程序。我在 BackgroundWorker 中从 GUI 调用引擎(它是一个 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 触发此事件。

我希望你能明白我的意思:-)

在此先感谢您的帮助!

4

0 回答 0