作業スレッドで SQL バッチを開始するメイン UI スレッドがあります。
バッチは、いくつかのエラー (ブロッキング) または警告 (非ブロッキング) を生成する場合があります。
最初のケースでは、最終的にトランザクションをロールバックしてスレッドを終了します。
2 番目のケースでは、ユーザーに SQL バッチの途中で警告メッセージを確認してもらいます。
- 一部のデータは処理されます
- いくつかの警告が生成されます
- ユーザーがこれらのメッセージをレビューします
- ユーザーはバッチを続行するか停止するかを決定します
- バッチの再開または停止
作業スレッドから直接作成することもできますがShowDialog()
、これは UI スレッドではないため、このソリューションは好きではありません。
私のアイデアは、メイン UI スレッドに状況を通知し ( 「警告が生成されました」 )、作業スレッドを一定時間 (たとえば 500ms) スリープさせることでした。トライステート ( bool?
) は、スレッドが起動するたびにチェックされます。値がない場合、スレッドは再びスリープ状態になります。
ユーザーが警告を確認し、場合によっては続行することを決定すると、ブール値が設定され、次に作業スレッドが起動したときに、続行するか、バッチを安全に中止 (ロールバック) するかがわかります。
これはとても悪いデザインパターンですか?