Microsoft Solver Foundation
最近のWinForms
プロジェクトでスケジューリングの問題を解決するために使用しています。
私のスケジューリング方法は次のようなものです:
public class Scheduler
{
public void Schedule()
{
InitializeParameters();
PrepareDateFromDatabase();
ScheduleUsingMSF(); //<---- this line is black box and take a long time to execute
SaveSchedulingResultToDb();
}
}
スケジューリングプロセスに時間がかかる場合があります(ScheduleUsingMSF()メソッドを制御できないため、時間がかかります)、BackgroundWorker
GUIのフリーズを防ぐためにスケジューリングメソッドを呼び出すために使用しました。
スケジューリング プロセスに時間がかかる場合、ユーザーは現在のスケジューリング操作をキャンセルしてパラメーターを変更し、再度実行したい場合があるため、キャンセル メカニズムを提供したいので、次のコードを使用して、方法に従って操作をキャンセルしました。バックグラウンド ワーカー:
bw.WorkerSupportsCancellation = true;
...
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
var scheduler = new Scheduler();
scheduler.Schedule();
}
private void buttonCancel_Click(object sender, RoutedEventArgs e)
{
if (bw.WorkerSupportsCancellation == true)
{
bw.CancelAsync();
}
}
if ((bw.CancellationPending == true))
解約方法はどこでどのように確認すればよいSchedule()
ですか?