2012-02-07 10 views
0

2つのプロジェクト:ProjectAProjectBを持つソリューション(Visual Studio、2010)があります。 ProjectAは、私が書いているライブラリであるProjectBのテストコンソールアプリケーションです。私は、これは違いを作るかどうかわからないんだけど、私は起動時にアプリケーションの2つのインスタンスを実行している:私はプログラムをトレースするために行くときソリューション(Visual Studio)でプロジェクトをデバッグすると、アプリケーションがランダムに閉じます

if (arg.Length == 0) 
{ 
    Process.Start(new ProcessStartInfo("arcticus", "t")); 
} 

if (arg.Length == 0) 
{ 
    ConnectingNode(); 
} 
else 
{ 
    ListenNode(); 
} 

は、ランダムな位置(と常に一貫していない)がありますステップ(またはステップオーバー)しようとすると、アプリケーションはデバッグを停止し、メッセージではなく完全に閉じます。

アプリケーションの他のインスタンス(デバッグしていないインスタンス)がクラッシュし、コンソールウィンドウにエラーが表示されます。スローされたエラーは、デバッグ中のインスタンスへの接続が失われたためです。

両方のプロジェクトでデフォルトのデバッグ設定が使用されていますが、通常は正常にトレースできます。ビルド構成に何か変更が加えられているのでしょうか、あるいは単にこの問題を解決するのに役立つ一般的なテスト方法でしょうか?

追加情報:ライブラリはasyncを使用します。いくつかのスレッドプールの使用もあります。

+0

あなたは再帰をまったく使用していますか?スタックオーバーフローでこの動作が発生することがあります。 –

+0

Nope。私はそれを今遊んでいます、そして、それは現在宣言で出ています: "FileHeader header = null;"、それはステップインまたはステップオーバーでただ終了します – Mike

答えて

0

"スレッドの/ threadPool/Tasks/TaskFactoryで「再生」中に他のスレッドに属しているデータにアクセスしたときの動作のようなものです。これを解決するには、スレッドセーフなオブジェクトやInvoke/BeginInvokeだけを使用しなければなりませんでした。プロセスAのコードはプロセスBに属していると見なされる場合があります。
十分正確ではありませんが、助けてくれることを願っています。

+0

はい私はあなたが正しいかもしれないと思っています、スレッドの束が含まれている場合は、ほとんどの場合これが行われます。私は物事をスレッドセーフなものにしようとする/呼び出しを使用します。私はそれにあなたに戻ってきます、ありがとう。 – Mike

関連する問題