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