2

コードにブレークポイントを設定すると、次のコードが完了しますが、そうでない場合は失敗します。

ここに問題があります。

SAP B1のアドオンを作成していますが、次の問題が発生しました。

フォームをロードするときに、フォームのマトリックスにいくつかの値を入力したいと思います。

ただし、ブレークポイント(フォームのロードが行われるメソッドに設定)がないと、後で実行されるコードの部分は失敗します。コードのその部分は、まだ表示されていないマトリックスを参照しているため、例外が発生します。これはすべて明らかです。しかし、なぜブレークポイントを設定することで問題が「解決」するのでしょうか。

何が起こっている?

ブレークポイントによって、フォームとそのフォームの要素を参照するコードの一部の読み込みと表示の間に遅延が発生する可能性がありますが、間違っている可能性があります。

4

4 に答える 4

2

デバッガーで実行すると、アプリの速度が低下し、多くの場合、ブレークポイントがなくても競合状態が隠されます。ブレークポイントを導入すると、競合状態が隠される可能性がさらに高くなります。この種の問題は解決が難しい場合があります。単純なロギング (log4net など) を導入して、アプリに大きな影響を与えずに何が起こっているかを確認することをお勧めします。ログを記録するだけでも状況が変わる可能性があることを覚えておいてください。

于 2010-04-21T14:07:42.333 に答える
1

これは Windows フォーム ベースのアプリケーションですか? (残念ながら私は SAP B1 について何も知りません) コードがフォームの Load イベントにまだ存在しない場合は、そこに挿入してみてください。一部のコントロールは、ハンドルが割り当てられるまで適切に使用する準備ができていません。これは、Windows メッセージ ループが数回実行されるまで発生しません。

于 2010-04-21T14:13:04.393 に答える
1

ブレークポイントがあるということは、実行時にモジュールが読み込まれるたびに、Visual Studio がモジュールをスキャンして、考えられるブレークポイントの位置を探すことを意味します。これにより、遅延が発生する必要があります。

于 2010-04-21T14:06:55.590 に答える
1

ブレークポイントは多少の遅延をもたらします。ブレークポイントは、プログラムの通常の実行に追加の命令を追加することです。ハードウェア ブレークポイントとソフトウェア ブレークポイントの両方が、プログラムの実行に何かを追加します (量は大きく異なりますが)。

http://en.wikipedia.org/wiki/Breakpoint

于 2010-04-21T14:22:01.027 に答える