2016-07-10 8 views
0

私のアプリケーション(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関数への次の間違ったアクセスが利用できないため、プログラムはエラーを伴い続けます。

ジョブを実行するにはどのコードをお勧めしますか?コメントありがとう!

+2

Application.Quit()はかなり弱いソースですが、ウィンドウで無視することができます。また、Application.Run()がまだ呼び出されていないときは、メインウィンドウのコンストラクタではなく、何もしません。 Environment.Exit()はより説得力があります。 –

+0

エラーがなければアプリケーションを終了させ、終了するだけでアプリケーションを終了させる方法はまずありません。それは簡単に検索できます。あなたの質問は無関係なので、サンプルコードをもっと小さくすることができます。 sPortなどは無関係です。あなたが質問を投稿するときには、他の人にも役立つはずです。そして、あなたはいつも例外をキャッチしてそこにexitステートメントを置くことができます。しかし、あなたは出口のステートメントが(エラー処理を除いて)どんな働きをするかを調べていません。 – barlop

+0

質問と回答が既に投稿されているものよりも利点がないような複写のようです。 – barlop

答えて

0

Application.Quit()の代わりにApplication.Exit()またはEnvironment.Exit()を使用してください。

私はこれが助けられ、幸運を願っています。

+0

はここでその答えはありませんhttp://stackoverflow.com/questions/12977924/how-to-properly-exit-ac-sharp-applicationアプリケーションの終了はwinformsのもので、一般的な環境の終了はwinforms以外のものです。 。 – barlop

+0

はいこれは重複した質問だと思います –

+0

提案されたSystem.Environment.Exit(1)でApplication.Quit()を置き換えると、実際にジョブが実行され、メインウィンドウと* .exeタスクの両方が終了します。一方、Application.Exit()はXamarin Studio 5.10のコンパイラでは受け入れられません。あなたの貴重な援助に感謝します! – Olduhu

関連する問題