【发布时间】:2016-11-12 11:53:03
【问题描述】:
在我的应用程序(Windows 7 Prof,Xamarin Studio V 5.10.1 build 6)中,我尝试打开一个串行端口。如果此端口不可用,我会尝试向用户发送一条对话框消息,然后使用以下代码退出程序,但遗憾的是这不会终止应用程序:
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 功能的错误访问不可用,程序继续运行并出现错误。
建议使用哪种代码来完成这项工作?非常感谢任何 cmets!
【问题讨论】:
-
Application.Quit() 是相当弱的酱汁,它可以被窗口忽略。或者在尚未调用 Application.Run() 时什么也不做,很可能是在主窗口的构造函数中。 Environment.Exit() 更有说服力。
-
你为什么不首先尝试弄清楚如何在没有任何错误的情况下终止应用程序,只需将其终止,这很容易搜索。你的问题很多是无关紧要的,你可以让你的示例代码更小。 sPort 等是无关紧要的。当您发布问题时,它也应该对其他人有用,所以重点是主题。而且您始终可以捕获异常并将退出语句放在那里。但是你甚至没有研究过什么 exit 语句会起作用(除了错误处理)
-
看起来像重复,其中问题和答案与已发布的内容相比没有优势。
标签: c#