我正在使用Visual Studio中的软件,用C#编写代码,而我注意到了一些东西。我无法弄清楚如何退出应用程序。
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ExitButton_Click(object sender, EventArgs e)
{
Application.Exit(); // This works, when I run the application and click on the button, it will indeed quit.
}
}
}
如上所述,当我点击按钮时,它确实会退出应用程序。但是,如果我将Application.Exit();
放在其他地方,它将无效。因此,如果我像这样修改Form1()
,它将不会自动退出应用程序:
public Form1()
{
InitializeComponent();
Application.Exit();
}
如果满足某些条件,则需要立即退出应用程序,例如,如果缺少某些应用程序文件。
我试图做以下事情:
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
closeapp();
}
public void closeapp()
{
Application.Exit();
}
private void ExitButton_Click(object sender, EventArgs e)
{
closeapp();
}
}
}
现在,如果我运行该应用程序,它将不会自动退出,但是,如果我单击“退出”按钮,它将退出该应用程序。
所以看起来如果没有从表单中发生的事件中调用它,它就不会关闭应用程序。
我使用关键字“Application.Exit();”在线搜索(包括Google和StackOverflow)不工作他们建议我使用“Environment.Exit();”。现在在我的测试应用程序中,这是有效的,但在我正在处理的实际应用程序中,当我删除所有代码时(当然在备份时),它看起来像以下情况,但它仍然不起作用。
namespace Censored
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Environment.Exit(1);
}
}
}
它可能是什么原因导致它不能在一个应用程序中工作,而是在另一个应用程序中工作?有什么东西被腐蚀了吗?
答案 0 :(得分:2)
初始化应用程序时,您无法应用@RestController
public class ControllerC {
public ResponseEntity<String> methodC(@RequestBody String someReq) {
RestTemplate restTemplate = new RestTemplate();
if (checkPam(someReq)) {
String fooResourceUrl
= "http://path-to-server-a/path-to-service-a";
ResponseEntity<String> response
= restTemplate.getForEntity(fooResourceUrl , String.class);
}else {
String fooResourceUrl
= "http://path-to-server-b/path-to-service-b";
ResponseEntity<String> response
= restTemplate.getForEntity(fooResourceUrl , String.class);
}
return null;
}
。那么,如果您的条件未得到满足,为什么不强迫您在Application.Exit
退出申请;
FormLoad
答案 1 :(得分:1)
我认为在这里做的最好的事情不是Application.Exit
,因为正如你所说,你想要退出应用程序,因为缺少一些文件。如果确实缺少某些文件,您应该向用户显示一条消息,然后然后退出。 Application.Exit
将以静默方式退出应用程序,因此用户不知道某些文件丢失。糟糕的用户体验!
显示错误消息的一种简单方法是抛出异常:
throw new FileNotFoundException(
"Some application files are missing! Please add them in before starting this application!");
Application.Exit
在此处不起作用的原因是因为尚未在该时间点创建“应用程序”。在Main
方法中,您应该有以下这一行:
Application.Run(new Form1());
调用上述方法后将创建“Application”。但在调用Run
之前,还有什么叫做?表单的构造函数! 它然后调用InitializeComponent
,您要退出该应用程序。目前尚未调用Run
!