C# Can';如果从类运行表单,则不会结束表单项目的执行
我正在开发一个应用程序,它需要一个初始设置阶段(只运行一次),然后执行实际的程序。我通过在主文件(Program.cs)中实例化一个类来实现这一点。此类检查用户是否已经进行了设置,并在此基础上执行特定表单。问题是,一旦“FormGridScheduler”表单用classic X按钮关闭,程序不会终止其执行,但它仍在后台运行。在表单中,我创建了线程,但在“form_Closing”事件期间,我将中止所有线程,因此执行过程中应该没有剩余的线程。有人知道如何解决这个问题吗 这是“Program.cs”文件,我从中初始化“FormManager”类,然后从中执行表单C# Can';如果从类运行表单,则不会结束表单项目的执行,c#,forms,exit,C#,Forms,Exit,我正在开发一个应用程序,它需要一个初始设置阶段(只运行一次),然后执行实际的程序。我通过在主文件(Program.cs)中实例化一个类来实现这一点。此类检查用户是否已经进行了设置,并在此基础上执行特定表单。问题是,一旦“FormGridScheduler”表单用classic X按钮关闭,程序不会终止其执行,但它仍在后台运行。在表单中,我创建了线程,但在“form_Closing”事件期间,我将中止所有线程,因此执行过程中应该没有剩余的线程。有人知道如何解决这个问题吗 这是“Program.cs
static class Program {
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//I start the form manager
FormManager formManager = new FormManager();
}
}
这是FormManager类
class FormManager {
public FormManager() {
//I check if the user has already set up the program or not
if (!Settings.Default.SetupDone) {
//If you haven't done the setup yet, I start the corresponding forms
Application.Run(new FormSetup());
//I check if the user has closed the setup screen before completing it
if (Settings.Default.SetupDone) {
//I execute the main form
Application.Run(new FormGridScheduler());
}
} else {
//I execute the main form
Application.Run(new FormGridScheduler());
}
}
}
谢谢你的关注和耐心。欢迎任何建议 你可能会得到一个例外,在形式上没有接近尾声。您应该在表单中使用try/catch和finally来确保表单始终关闭。不,通过调试,我看到表单关闭时没有异常。调试过程一直持续到类“FormManager”的末尾,然后返回到“Program.cs”main,在创建新的“FormManager”实例后停止。请参见以下内容:我发现了问题。当我停止线程时,其中的UDP侦听器将继续侦听,即使线程已关闭,因此程序永远不会结束。我必须在FormClosing事件发生时直接终止侦听器。无论如何,非常感谢您的帮助和帮助!