6

プログラムの最初で、COM6 上のデバイスとの接続を開始できるかどうかを確認しています。デバイスが見つからない場合は、MessageBox を表示してプログラムを完全に終了させたいと考えています。

Main()初期プログラムの関数でこれまでに得たものは次のとおりです。

try
{
    reader = new Reader("COM6");
}
catch
{
    MessageBox.Show("No Device Detected", MessageBoxButtons.OK, MessageBoxIcon.Error)
}

Application.EnableVisualStyles();
Application.SetCompatibleRenderingDefault(false);
Application.Run(new Form1());

MessageBox コマンドの後に a を配置しようとするとApplication.Exit();、デバイスが検出されないときに MessageBox が正しく表示されますが、MessageBox を閉じると、Form1 は開きますが、完全にフリーズし、閉じたり、ボタンをクリックしたりできません。デバイスが接続されていないため、とにかくエラーが発生するはずです。

MessageBox が表示された後、プログラムを完全に強制終了する方法を探しています。ありがとう。

解決策:return; MessageBox が閉じられた後にメソッドを使用した後、デバイスが接続されていないときにプログラムが終了しました。ただし、デバイスが接続されている場合でも、テスト後の読み取りに問題がありました。これは私が以前に発見したことのないものでしたが、簡単な修正でした. これが私の完全に機能するコードです:

try
{
    test = new Reader("COM6");
    test.Dispose(); //Had to dispose so that I could connect later in the program. Simple fix.
}
catch
{
    MessageBox.Show("No device was detected", MessageBoxButtons.OK, MessageBoxIcon.Error)
    return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
4

4 に答える 4

6

これはMain()ルーチンに含まれているため、以下を返すだけです。

try
{
    reader = new Reader("COM6");
}
catch
{
    MessageBox.Show("No Device Detected", MessageBoxButtons.OK, MessageBoxIcon.Error)
    return; // Will exit the program
}

Application.EnableVisualStyles();
//... Other code here..

から戻るMain()と、プロセスが終了します。

于 2013-06-20T19:30:08.920 に答える
2

boolean先頭にa を追加して、操作が完了したかどうかを判断します。

bool readerCompleted = false;
try
{
    reader = new Reader("COM6");
    readerCompleted = true;
}
catch
{
    MessageBox.Show("No Device Detected", MessageBoxButtons.OK, MessageBoxIcon.Error)
}

if(readerCompleted)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleRenderingDefault(false);
    Application.Run(new Form1());
}

ステートメントの後にコードがないためif、ブール値が false の場合、プログラムは終了します。

この種のロジックは、Main()関数だけでなく、コードの他のセクションにも適用できます。

于 2013-06-20T19:29:35.763 に答える
0

メッセージボックスのコードの後に​​ Application.Exit() を置くことができます
catch
{
MessageBox.Show("No Device Detected", MessageBoxButtons.OK, MessageBoxIcon.Error")
Application.Exit();
}

于 2013-09-23T08:49:46.907 に答える