每当我尝试在文件中使用File.Delete方法时,我就会收到IOException。我无法控制写作线程。所以从我的线程如何停止文件写入和删除文件。
答案 0 :(得分:4)
你不能;这就是文件锁定的全部要点 - 准确地防止你提出的建议。
你可以达到同样效果的唯一方法是先杀掉另一个进程。这是一个非常糟糕的设计,你可能根本无法接受。
为什么你还需要这样做?
答案 1 :(得分:0)
为了实现这一点,编写线程必须以非独占模式打开文件,以允许访问该文件给其他人。
如果你对写作线程没有任何控制权,你将无法做到。
一种可能的替代方法是尝试获得用于写入的相同句柄。毕竟,如果它是你的应用程序中的一个线程,那么这个句柄就在你的内存空间中。
请记住,如果您确实设法删除了该文件,那么另一个线程可能不会期望它,如果它不处理它在尝试再次写入时会遇到的异常,则您的整个过程可能会被终止。
说真的,你应该重新考虑你的设计。
答案 2 :(得分:0)
简单地说,这是不可能的,因为其他一些进程在写入时强制独占锁定文件,你无法获得锁定。
因此,您的进程必须等到锁定进程释放锁定或以某种方式终止锁定进程。
答案 3 :(得分:0)
其他一些帖子?即在你自己的程序中?
告知它已经出现了什么,它需要停止写入,关闭文件并删除它。然后让它回复消息并执行此操作。