我有一个工具可以将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开始。
我希望你能理解我的意思: - )
提前感谢您的帮助!