2つのスレッドがあるとします。1つのスレッドで、一連のジョブを実行しています。もう一方のスレッドでは、ユーザー入力がそれらのジョブを制御するのを待っています(つまり、次のジョブにスキップします)。例(疑似C#):
public class Worker {
public List<Job> Jobs { get; set; }
public Worker(Controller anotherThread) {
anotherThread.SkipJobRequested += OnSkipJobRequested;
}
public DoWork() {
foreach (Job job in Jobs) {
// Do various work...
}
}
// Event that fires on Controller thread
public void OnSkipJobRequsted(Object sender, EventArgs args) {
// Somehow skip to the next job
}
}
次の仕事へのスキップをどのように処理すればよいかわかりません。私が思い浮かぶ可能性の1つはIsSkipRequested
、スキップが要求されたときに設定したインスタンス変数(、など)を持ち、内のさまざまな時点でそれをチェックすることDoWork()
です。
このイベントを処理するために使用できる他のパターンはありますか?