【发布时间】:2011-12-20 14:54:59
【问题描述】:
程序代码如下:
using System.Diagnostics;
class Test
{
static void Main()
{
using (Process p = Process.Start("notepad.exe"))
{
}
}
}
问题是当这个程序已经关闭并且记事本仍在运行时,记事本会锁定它。而且我不想关闭记事本。
我尝试使用 Unlocker 来检测问题。
结果截图如下:
所以我想要的是启动一个 exe 文件并立即处理所有线程资源。或者我无法卸载我的程序,直到它打开的所有程序都关闭。这可能会导致不愉快的用户体验。要求系统重新启动也令人不快。 Unlocker 可以很好地做到这一点。如果我用Unlocker解锁父文件夹,它不会关闭记事本,然后我可以正常删除这个程序文件。
【问题讨论】:
-
你为什么要对包裹在
using语句中的对象调用Dispose? -
锁定什么?你想做什么?
-
首先,using 语句本身会在退出时调用 dispose。其次,您可能想使用
WaitForExit。 -
我相信这是导致锁定的 VS 调试器(我想知道是什么)。记事本不锁定任何东西,甚至不保持文件处于打开状态。