- ふらっと C#,C♯,C#(初心者用) Part114©2ch.net
770 :デフォルトの名無しさん[sage]:2015/02/26(木) 19:03:03.13 ID:MpeHe+g/ - 別スレッドで作成したフォームをフリーズさせないためにはどのように書けばいいのでしょうか。
下のプログラムは相当省略していますが、ラムダ式で書いた部分は実際には別モジュールにある大きな処理だとします。 このようなプログラムだと呼び出し元のフォームは固まらないのですが、form2が固まってしまいます。 form2を呼び出し元フォームのフィールドとしてnewし、form2.Show(); を非同期実行前にすれば固まらないのですが、 フォームの作成まで含めて別モジュールとして分離したいのです。 そもそも別スレッドでフォームを作ろうとすべきでないのでしょうか。よろしくお願いします。 private async void button1_Click(object sender, EventArgs e) { await Task.Run(() => { Form2 form2 = new Form2(); form2.Show(); for (; ; ) { // 時間のかかる処理(省略) if (form2.IsDisposed) return; } }); }
| - ふらっと C#,C♯,C#(初心者用) Part114©2ch.net
773 :デフォルトの名無しさん[sage]:2015/02/26(木) 19:23:08.81 ID:MpeHe+g/ - >>771-772
やはりそうでしたか。ありがとうございました。
|
|