Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 通常从何处引发OnClosing事件?_.net_Winforms_Applicationcontext - Fatal编程技术网

.net 通常从何处引发OnClosing事件?

.net 通常从何处引发OnClosing事件?,.net,winforms,applicationcontext,.net,Winforms,Applicationcontext,我创建了一个从.NET中的ApplicationContext继承的类,我想知道在哪里最好地引发OnClosing事件。现在,ApplicationContext有一个“ThreadExit”事件,但这会在ExitThread和ExitThreadCore都运行后触发。这是一个典型的一次失败事件的发展方向吗?这似乎更像是一个一旦结束的事件将走向何方 作为后续行动,我的一次性事件应该去哪里?我认为,重写Dispose并将其放在开头似乎是合理的。世界末日安全吗?或者曾经被关闭的人甚至需要一些刚刚被删

我创建了一个从.NET中的ApplicationContext继承的类,我想知道在哪里最好地引发OnClosing事件。现在,ApplicationContext有一个“ThreadExit”事件,但这会在ExitThread和ExitThreadCore都运行后触发。这是一个典型的一次失败事件的发展方向吗?这似乎更像是一个一旦结束的事件将走向何方

作为后续行动,我的一次性事件应该去哪里?我认为,重写Dispose并将其放在开头似乎是合理的。世界末日安全吗?或者曾经被关闭的人甚至需要一些刚刚被删除的东西

编辑:
因此,看起来我必须使用从ApplicationContext继承的ThreadExit事件。我现在的问题是,从这里取消结账安全吗?还有,我应该从哪里启动OnClosed?我将使用ThreadExit事件,尽管我不喜欢这个名称。然而,我仍然在想,在什么地方放置我的OnClosed事件是最好的。

很难理解这一点,ApplicationContext类为UI线程的状态建模。只要有一个处于活动状态,UI线程就会泵送消息循环。一旦关闭没有什么意义,当没有剩下窗口时取消它就没有意义了,在最后一个窗口消失后不会有什么事情发生。ThreadExit已经发出线程结束的信号。可能是ThreadExit,但您将如何处理它,以及它与紧跟其后的ThreadExit有何不同。这是假设您有windows。我的班级在关闭时可能没有使用任何窗口。它是一个对从系统托盘运行的应用程序进行建模的类。ThreadExit的工作方式是否与表单应用程序的OnFormClosing类似?如果是这样的话,我可以直接使用它,而不是创建一个新的,尽管我不是这个名字的超级粉丝。从根本上说,这仍然是一个表单应用程序。所有内容都包含在form类中,并从中派生。我特别不希望表单控制任务栏应用程序。就我个人而言,我认为让应用程序的核心(在后台运行并在系统托盘中表示的核心)由一个甚至不需要操作的无关类(表单)控制是没有意义的。由于这种设计思想,我没有使用Application.Run(newform1());而是:Application.Run(新的myApplicationContext());