タイトル : Re^5: BackgroundWorkerの使い方で教えてください 投稿日 : 2009/11/27(Fri) 20:26 投稿者 : 魔界の仮面弁士
> 処理の中は、いくつかの処理の塊なので、半分くらい終わったとか大まかなことは > わかりますが、1%単位でのプログレスの表示には対応できそうにありません。 大まかでも良いと思いますよ(もちろん、細かく表せるならその方が良いですが)。 「0% から 1% に増加するのに要する時間」と 「1% から 2% に増加するのに要する時間」が違っていても良いですし、 増加単位が 1% 単位でなければならないという制限もありませんから。 > キャンセルボタン押下も時間のかかる処理に埋め込んだ場所でしか取れなくなる > のですよね・・・。悲しいです。 「キャンセルされたら、以降の処理を中断する。」という実装のほかに、 「キャンセルされたら、そのスレッドの存在は無視して、新しいスレッドを作る」という 実装方法もあるかも知れません。やりたい内容にもよりますけれども。 > 希望としては、時間のかかる処理を行いながら、いつでもキャンセル可能で、その上 > バーが進んでいくのができるのがバックグラウンド処理かと勘違いしてました。 キャンセル可能かどうかや、進捗表示が可能かどうかは別の話ですね。 たとえば、レストランの流れを想像してみてください。 厨房で料理が作られている間(バックグラウンド処理)にも、 フロアスタッフは、接客作業(メイン処理)を行う事が出来ますよね。 この時、厨房のスタッフが、フロアスタッフに料理の進捗状況を逐次伝える必要があるか、 それとも、出来上がった時点で料理の完成を伝えるのみで良いのか、という違いがあっても それぞれのスタッフが並行で自分の作業をこなす事ができる点では変わりませんよね。 |