2010-12-10 86 views
1

每当我尝试在文件中使用File.Delete方法时,我都会收到IOException,而其他线程正在写入。我没有控制写作线程。所以从我的线程如何停止文件写入和删除文件。如何在其他线程正在写入文件时删除文件?

+3

我认为如果你的程序正在运行一个文件,而某人的进程会杀死你的文件并删除你的文件,你就不会感到高兴。 – 2010-12-10 07:14:57

回答

4

你不能;这就是文件锁定的关键 - 完全防止你提出的问题。

您可能达到相同效果的唯一方法是先杀死其他进程。这是一个非常糟糕的设计,可能你根本无法接受。

为什么你需要这样做呢?

0

为了使这成为可能,写线程在一个非排他性的模式,将允许访问文件给别人打开该文件。

如果你有写线程上没有任何控制,你将不能够做到这一点。

一个潜在的选择是尝试获得用于书写的相同句柄。毕竟,如果它是你的应用程序中的一个线程,那么这个句柄就在你的内存空间的某个地方。

请记住,如果你设法删除的文件,其他线程可能不会想到它,如果它不处理异常尝试再次写时,它会得到,你的整个过程可能会被终止。

说真的,这听起来像你应该重新考虑你的设计。

0

简单,因为其他一些工艺上的文件具有独占锁,而写而有力,你不能获得锁是不可能的。

因此,您的进程必须等到锁定进程释放锁或以某种方式终止锁定进程。

0

其他一些线程?即在你自己的程序中?

沟通,它的东西已经到来了,它需要停止写作,关闭该文件并将其删除。然后让它对这条消息作出回应并且这样做。

相关问题