2

私はいつも次のようなコードを書きます:

If SomethingIsTrue Then
    'DoThis
ElseIf SomeOtherThingIsTrue Then
    'DoThat
Else
    Debug.Assert (False)'Doh!! I forgot to handle a certain condition
End If

VB6では、これはうまく機能しました。IDEでアプリをテストしているときに、アプリがDebug.Assert(False)行で停止し、どこで何かを見逃したかがわかりました。

しかし、VB.NETはそれだけではなく、代わりに巨大なメッセージボックスを提供してくれます。これは、Debug.Assertの標準的な動作のようです。

2つの質問があります:1)メッセージボックスを表示する代わりに、その行でスムーズに停止させるにはどうすればよいですか?2)実行時に(!)メッセージボックスが表示されないようにするにはどうすればよいですか?代わりに、アプリケーションはメッセージボックスを停止または表示せずに実行を継続しますか?

ありがとうございました!

4

2 に答える 2

2

私はこの線に沿って何かを書くでしょう:

if debugger.isattached=True then
   debugger.break
end if

共有サブでラップするだけで、elseステートメントで呼び出すことができます。

コードはVisualStudioを使用せずに入力されているので、うまくいくことを願っています。

于 2012-12-13T08:07:01.287 に答える
0

メッセージボックスを表示する代わりに、その行でスムーズに停止させるにはどうすればよいですか?

Retryポップアップ表示されるメッセージボックスをクリックするだけです。MSDNから:

[再試行]をクリックすると、アプリケーションがデバッガーで実行されている場合はデバッガーのコードに移動し、そうでない場合はデバッガーを開くように提案されます。

クリックするIgnoreと、メッセージは無視されます。


実行時に(!)メッセージボックスが表示されないようにするにはどうすればよいですか?代わりに、アプリケーションはメッセージボックスを停止または表示せずに実行を継続しますか?

すべてのアサートはコードの実行中に発生するため、実行時に意味するわけではありません。

デバッガーなしでアプリケーションを実行しているときにアサートを無視する必要がある場合は、デバッグビルドではなくリリースビルドを作成してください。このDebug.Assert方法はデバッグビルドでのみ機能します。デバッグビルドのポイントは、デバッグが簡単なことです。


それでもメッセージボックスを抑制したい場合は、アサート動作のカスタマイズを参照してください。

たとえば、[アサーション失敗]ダイアログボックスを表示する代わりに、TraceListener.Failメソッドをオーバーライドしてイベントログに書き込むことができます。

この方法で出力をカスタマイズするには、プログラムにリスナーが含まれている必要があり、TraceListenerから継承し、そのTraceListener.Failメソッドをオーバーライドする必要があります。

于 2012-12-13T08:11:20.730 に答える