0

これはロングショットかもしれませんが、私にはアイデアがありません。

3 つのプロジェクトを含む VS C# ソリューションがあります。クラス ライブラリ プロジェクトと、そのクラス ライブラリに依存する 2 つのアプリケーション プロジェクトがあります。クラス ライブラリは、sharpdevelop プロジェクトの avalonedit dll を含むいくつかの他の DLL に依存しています。

アプリケーションの 1 つは、avalonedit コントロールをラップする独自のコントロールの使用を含め、正常にビルドおよび実行されています。他のアプリケーションが実行に失敗し、ラッピング コントロールで XAML を介して avalonedit コントロールが初期化される時点で失敗しているようです。

問題は、デバッグ出力にエラーがまったく表示されないことです。表示されるのは、dll がロードされたメッセージだけで、その後は何も表示されません。コントロールのコンストラクターにステップインすると、ステップが完了しません。デバッガーはアプリが実行中であることを示していますが、基になる編集コントロールが XAML 側によって構築されているときに、avalonedit dll のどこかで回転しているようです。

2 つのプロジェクトの環境の違いに問題があると想定する必要がありますが、問題の追跡をどのように進めるかについてはちょっと困惑しています。avalonedit のソースを中断できるように、どうにかして問題を解決する必要がありますか?

編集:すべてを一時停止/中断すると、コントロールコンストラクターを呼び出している行に戻ります。

4

1 に答える 1

1

デッドロックのように聞こえます。すべてのスレッド、それらのスタック トレース、および同期プリミティブ (ロック、セマフォなど) をよく見てください。注意: 競合するリソースは明示的ではない場合があります (たとえば、構築中の型の静的フィールドへのアクセスを取得しようとする何かを静的コンストラクター内で待機している場合、デッドロックが発生します)。

デッドロックを引き起こす方法はたくさんありますが、それを処理するための簡単なアドバイスはありません。また、Visual Studio のすべての例外でブレークを有効にすることもできます ([デバッグ] -> [例外...] および [CLR 例外] にチェックマークを付けます)。

これで問題が解決しない場合は、ここにスタック トレースを提供してください。誰かが問題を発見できるかもしれません。

于 2011-02-09T11:02:25.343 に答える