トップページ > プログラム > 2015年02月26日 > MpeHe+g/

書き込み順位&時間帯一覧

28 位/217 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000200002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part114©2ch.net

書き込みレス一覧

ふらっと 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
やはりそうでしたか。ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。