ホーム
サンプルコード
雑記
デザインパターン
ソフトウェア
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Aries.Form { public partial class ArWaitForm : System.Windows.Forms.Form { private BackgroundWorker _bgw = new BackgroundWorker(); private DoWorkEventHandler _doWorkEvent = null; private RunWorkerCompletedEventHandler _runWorkerCompletedEvent = null; #region プロパティ /// <summary> /// DoWorkEventを設定します。設定できるのは最初の一回だけです。 /// </summary> public DoWorkEventHandler DoWorkEvent { set { if (_doWorkEvent == null) { _doWorkEvent = value; _bgw.DoWork += new DoWorkEventHandler(value); } } } /// <summary> /// RunWorkerCompletedEventを設定します。設定できるのは最初の一回だけです。 /// </summary> public RunWorkerCompletedEventHandler RunWorkerCompletedEvent { set { if (_runWorkerCompletedEvent == null) { _runWorkerCompletedEvent = value; _bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(value); } } } #endregion #region イベント /// <summary> /// Formを表示したときに発生するイベントです。 /// </summary> /// <param name="sender">イベントが発生したオブジェクトです。</param> /// <param name="e">イベント データを格納している <see cref="EventArgs"/>。</param> /// <remarks> /// 本イベントでバックグラウンド処理を動作させます。 /// </remarks> private void ArWaitForm_Load(object sender, EventArgs e) { try { if (_doWorkEvent != null && _runWorkerCompletedEvent != null) { // バックグラウンド操作の実行を開始します。 _bgw.RunWorkerAsync(); } else { // 設定していない場合は画面を閉じます。 Close(); } } catch (System.Exception ex) { throw ex; } } #endregion /// <summary> /// コンストラクタです。 /// </summary> public ArWaitForm() { // 閉じる、最小化、最大化ボタンを表示してません。 // this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; InitializeComponent(); } #region メソッド /// <summary> /// 本Formを閉じます。 /// </summary> public void FormClose() { Close(); } #endregion } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
ArWaitForm form = new ArWaitForm(); private void button3_Click(object sender, EventArgs e) { form.DoWorkEvent = Work; form.RunWorkerCompletedEvent = End; form.ShowDialog(); } private void Work(object sender, DoWorkEventArgs e) { for (int i = 0; i < 10; i++) { System.Threading.Thread.Sleep(1000); } } private void End(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show("END"); form.FormClose(); }