少しまとまった時間ができたので、VS2005を使って何かやろうと考えました。
んでWindowアプリケーションのプロジェクトを作成しツールボックスを眺めていると
「BackgroundWorker」って見慣れないコンポーネントを発見!!!
なんだろうとGoogleさんに聞いてみると以下のようなページを見つける。
時間のかかる処理をバックグラウンドで実行するには?[2.0のみ、C#、VB] - @IT<> .NET Framework 2.0では、そのような処理を容易に実装するための「BackgroundWorkerコンポーネント」が新しく追加されている。これを使えばスレッドをほとんど意識することなく、重い処理を別スレッド(バックグラウンド)で実行させることができる。
>へぇ。便利そう。とりあえずこれをフォームに放り込んであれこれしてるうちに以下の様な形になりました。


何か重たい処理を一定間隔で実行するような事があれば使えそうなフォームです。以下仕様。
・左上の「処理間隔」で処理を実行する間隔を「秒」または「分」で指定します。
・時間を変更したらは次回処理実行時に反映されます。
・「今すぐ実行」ボタンをクリックすると即座に処理を実行します。
・処理を待つ間は「[待機中]」となり、実行までの時間を元にプログレスバーのメモリが1秒毎に増えてきます。
・処理実行中は「[実行中]」となり処理の進行状況がプログレスバーに現れます。
・処理実行中は「今すぐ実行」ボタンの代わりに「キャンセル」ボタンが表示され、処理のキャンセルが可能です。
まあWindowsアプリをまともに作った事がない人間があれこれするとこうなります。
とりあえずBackgroundWorkerコンポーネントで使える機能は全部試せたので満足!
んでこれをやってるうちに「同じような事を去年やったなぁ~」と思い出す。
プログラミングと開発者のためのCodeZine:.NETマルチスレッドプログラミング 1:スレッドの実行と同期(マルチスレッド, 同期, 競合, ロック)こちらの方を理解せずにBackgroundWorkerコンポーネントを利用すれば一応はマルチスレッドなプログラムを作成できる。
しかしやはりその処理の本質をまずは学ぶ事も大切かもなぁ~と少し思ったりした。にしても『BackgroundWorkerコンポーネント』便利やわぁw
にしてもこうやっていろいろ作るのはいいのだけれど、それを「使えるツール」に発展もしくは応用する事が少ないのはどうすれば治るでしょう(TAT
参考
バックグラウンド処理を途中でキャンセルするには?[2.0のみ、C#、VB] - @IT
投稿日時 : 2006年9月13日 22:53