ラフ
backgroundWorker[] BackgroundWorkers;←n個のbackgroundworkerを格納
void bgworker_ondowork(){
while(!cancellationpending){
target = fetch_data();
if(test(target)){
cancelallbgworkers();
result_found = true;
result_data = target;
return;
}
}
}
fetch_data(){
//staticを使ってデータを一個ずつ渡していく関数
//既にデータを渡しきっている状態で呼び出されたら、
cancelbgworkers();
return;
//する
}
開始処理(){
result_found = false;
result_data = null;
//bgworkers作る
foreach(bgworkers)をRunWorkerAsync();
}
bgworker_onrunworkercompleted(){
update_GUI();
}
if(test(target)){
cancelallbgworkers();
// result_found = true;
// result_data = target;
push_result(target); // <-New!
return;
}
//にしよう
// result_found = false;
// result_data = null;
result_clear();