如果我有一个控制台应用程序,其中的代码类似于:
using (DisposableObject object = new DisposableObject())
{
if (a condition)
Environment.Exit(0);
// Do Stuff
}
我的对象会被正确清理吗?还是线程在对象被清理之前就终止了?
如果我有一个控制台应用程序,其中的代码类似于:
using (DisposableObject object = new DisposableObject())
{
if (a condition)
Environment.Exit(0);
// Do Stuff
}
我的对象会被正确清理吗?还是线程在对象被清理之前就终止了?
Environment.Exit(0);
究竟是做什么的? - Olivier Jacot-Descombes// Do Stuff
不会执行。该调用只是终止进程(返回错误代码 - 传入的 int
)。 - Oded当应用程序退出时,操作系统知道的资源通常会被清理。操作系统不知道的资源通常不会被清理。
例如,一些使用数据库并需要实现与数据库服务器直接支持的锁定范例不同的程序可能会使用一个或多个“LockedResources”表来跟踪应该锁定哪些资源。需要获取资源的代码将锁定“LockedResources”表,更新它以显示需要锁定哪些资源,然后释放它;即使应用程序需要长时间持有真正的资源,对“LockedResource”表的操作通常也会非常快速(因此“LockedResource”表仅会短暂锁定)。但是,如果应用程序在“LockedResources”表表示拥有某个资源时执行Environment.Exit
,操作系统将不知道如何更新“LockedResources”表以取消这种所有权。
SqlConnection
上使用它,但这个using
块嵌套在另外两个块中(SharePoint 对象)。我只是想确保Dispose()
方法会被调用,因为不释放 SP 对象会在日志中生成错误。 - RJ CuthbertsonEnvironment.Exit()
的方法了? - code4life