我的印象是,如果一个应用程序有一个打开的句柄,并且崩溃了,句柄不会被释放,并且如果你尝试访问那个句柄(比如说一个文件),那么你会得到一个错误。应用程序崩溃时打开句柄会发生什么? (Windows XP以上)
但是,我已经在Windows XP以上的版本中尝试过,并且如果我在关闭句柄之前关闭了任务管理器中的exe,句柄似乎会被释放。以下是代码:
Private Sub Form_Load()
Dim iFile As Integer
iFile = FreeFile
Open "myfilelock" For Output Lock Read Write As #iFile
MsgBox "About to close" 'close it here with task manager
Close #iFile
End Sub
那么,Windows XP是否会释放所有打开的句柄,以防这些句柄的exe崩溃?
+1。虽然在Windows 95之前有Windows的版本,但你知道这在16位Windows中并不是这样,但我猜这是现在的古代历史......也许http://blogs.msdn.com/oldnewthing/archive/ 2004/03/01/82103.aspx – MarkJ