プログレスダイアログの表示とはWindowsアプリケーションで、なんか重たい処理をした時に、進捗を表すためのFormである。
今時はWPFでやるべきだと思いつつ、まだ、Formアプリケーションを勉強中。
目標としては、以下を意識した
- 進捗表示中にアプリケーションがフリーズしない
- 進捗表示に数値情報を出して、あと、どれくらいで終わるかわかるようにする。
- 今後も、別のアプリケーションで利用するように汎用性を持たせること
まず、僕が作ったProgressFormクラスをのせておきたいのだが、どうも上手く行かなかった。普通にのせるには容量多い。なんぞ、Gistという方法があるみたいなので、後日頑張ってのせる予定。多分、きっと。ぶっちゃけ、誰も見てないか。見てたら、コメントが無性にほしい。ほしがりさんですいません。どうでもいいか。
以下で、ひとまず、載せてもいないコードについて書く。
自分の作成した関数の中身
- ポイントはまず表示をShow関数で行うこと。この時に、全ての初期化を行う。
- 次にMessageプロパディを編集して、プログレスダイアログの表示を更新させる。これはクライアントのコードに記載する。この中で、Invokeも行っているので、更新がされないことは無い。
- 最後に、Close関数で、プログレスダイアログを閉じる。これはfinallyから、呼び出すようにすると良い。
Task.Run( () => { Console.WriteLine("test");} );
後、この処理ではプログレスダイアログを呼び出したフォームはEnableプロパディをfalseにすることで、操作できないようにしてある。これも最初はどうしたら良いかと迷った。。。
http://qiita.com/OneK/items/6ca3a71511cfe53caabc
これを作っていて、一番、混乱したのはスレッドの扱い方だった。進捗表示はGUIタスクの中で処理すべきかという話で、最初は別スレッドを作った。でも、結果として、GUI表示はGUIタスクの中にまとめて、重たい処理をTaskクラスで、別スレッドにするのが良いと感じた。今後も、その方針で行こうと決めれたのが良かった。
ひとまず、以上で!