トップ回答者
Windowsフォームクラスの中のスレットで、ブレークポイントを設定すると応答がなくなる

質問
-
こんにちは
C#のブレークポイントについて質問します。
下記のようにWindowsフォームクラスの中でスレッドを作り、①行に ブレークポイントを設定すると、止まるのですが応答が無くなりますMicrosoft Visual Studio 2005 Team Suite Service Pack 1でアップデートしていない場合は、問題なくブレークします
Windowsフォームクラスでない場合、問題なくブレークします別のPCにインストールしてみたのですが同じです
どなたか解決方法をご存知でしたら、教えていただけないでしょうか
private void Form1_Load(object sender, EventArgs e)
{
threadReceiveLoop = new Thread(new ThreadStart(ReceiveLoop));
threadReceiveLoop.IsBackground = true;
threadReceiveLoop.Start();
}
private void ReceiveLoop()
{
int intTestL = 0;
while (true)
{//無限ループ
① intTestL++;
Thread.Sleep(500);
}}
回答
-
ここに同じ話がありました。
Cannot debug a form method called from a thread
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=131836&SiteID=1そこに書かれていますが、メニューの
「オプション」-「デバッグ」-「全般」
の中の
「変数ウィンドウのオブジェクト上で ToString() を呼び出す(C# のみ)」
のチェックを解除すると、先ほど書いたウィンドウを表示しておいても、こちらでは固まることは無くなりました。
すべての返信
-
解決方法という訳ではありません。
こちらでも再現しましたので、そのご報告です。
最初は再現できなかったんですが、条件があるようでした。「自動変数」や「ローカル」のウィンドウを表示していない場合は問題ないのですが、それらのウィンドウを表示しておくと固まりました。
# こちらでは、30秒ほど固まった後に復帰しましたが、その後はブレークポイントで止まらなくなりました。また、上記ウィンドウを表示していなくても、例えば「イミディエイト ウィンドウ」で this を表示しようとすると、同様に固まりました。
QnA さんのところでは、上記ウィンドウの表示有無は関係ないでしょうか?
いずれにしても、フィードバック行きのような気がします。 -
ここに同じ話がありました。
Cannot debug a form method called from a thread
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=131836&SiteID=1そこに書かれていますが、メニューの
「オプション」-「デバッグ」-「全般」
の中の
「変数ウィンドウのオブジェクト上で ToString() を呼び出す(C# のみ)」
のチェックを解除すると、先ほど書いたウィンドウを表示しておいても、こちらでは固まることは無くなりました。