ふらっとC#,C♯,C#(初心者用) Part76
■ このスレッドは過去ログ倉庫に格納されています
0371デフォルトの名無しさん
2011/06/27(月) 15:04:42.52PrimeクラスはForm2クラスを所有して、publicなstartCalc、privateなCalcメソッドを持っています。
Form2クラスは自身のtextboxに文字を追記するpublicなwritelnメソッドを持っています。
希望の挙動は、PrimeクラスのstartCalcを呼ぶと、
メソッド内部でForm2が生成され、Calcメソッドの中で無限ループしつつ、逐一Form2.writelnに結果を書きだす事です。
こんなプログラムを書きたいのですが、startCalcの中で、form2.ShowDialog();Calc();とするとForm2を閉じるまでCalcが行われませんし、
form2.Show();Calc();とすると、ウィンドウメッセージの処理を忘れた時のような状態でフリーズしました。
そこで、並列にすれば良いのかな?と思って、
System.Threading.Tasks.Parallel.Invoke(form2.Show,Calc);としてみましたが、これもフリーズし、
最終的にSystem.Threading.Tasks.Parallel.Invoke(wrapper,Calc);としてwrapperの中でform2.ShowDialogすると希望通りの挙動になりました。
気になったのでwrapperの中でform2.Show()してみたら、これはフリーズしました。
結果として動いたのは嬉しいんですが、ここまで違いが出た理由が全く分からなくて気持ち悪いです。
誰か説明して頂けないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています