私のアプリケーション(Windows 7 Prof、Xamarin Studio V 5.10.1ビルド6)では、シリアルポートを開こうとします。このポートが使用できない場合、私は、ユーザーにダイアログメッセージを送信するために、その後、残念ながらアプリケーションを終了していない次のコードでプログラムを終了しよう:エラーの場合にC#アプリケーションを終了する方法
enter code here
using System;
using Gtk;
using Pango; // benötigt für Font-Operationen
using System.Diagnostics; // benötigt für "Process.Start (...)"
using System.IO.Ports; // benötigt für serielle Schnittstelle
using System.IO; // benötigt für IOException
public partial class MainWindow : Gtk.Window
{
// Globale Variable der Klasse
// ---------------------------
bool valret = true, wahl = true;
SerialPort sPort;
....
// Initialisierung der seriellen Schnittstelle
// -------------------------------------------
try { sPort.Open(); }
catch {
MessageDialog md = new MessageDialog (null,
DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close, "Serial IF nicht vorhanden");
int result = md.Run();
Application.Quit();
md.Destroy();
}
のメインウィンドウが閉じでもありません* .exeプログラムも終了しません。代わりに、sPort関数への次の間違ったアクセスが利用できないため、プログラムはエラーを伴い続けます。
ジョブを実行するにはどのコードをお勧めしますか?コメントありがとう!
Application.Quit()はかなり弱いソースですが、ウィンドウで無視することができます。また、Application.Run()がまだ呼び出されていないときは、メインウィンドウのコンストラクタではなく、何もしません。 Environment.Exit()はより説得力があります。 –
エラーがなければアプリケーションを終了させ、終了するだけでアプリケーションを終了させる方法はまずありません。それは簡単に検索できます。あなたの質問は無関係なので、サンプルコードをもっと小さくすることができます。 sPortなどは無関係です。あなたが質問を投稿するときには、他の人にも役立つはずです。そして、あなたはいつも例外をキャッチしてそこにexitステートメントを置くことができます。しかし、あなたは出口のステートメントが(エラー処理を除いて)どんな働きをするかを調べていません。 – barlop
質問と回答が既に投稿されているものよりも利点がないような複写のようです。 – barlop