假设您使用ThreadPool
执行某些操作并假设每个操作都写入文件。 ThreadPool
的所有线程都是后台线程,因此在关闭应用程序时它们将被终止。如果在ThreadPool
的线程正在将文件写入磁盘时关闭应用程序会发生什么?
答案 0 :(得分:6)
操作系统将关闭文件句柄作为终止进程的一部分。
答案 1 :(得分:3)
阅读Foreground and Background threads
上的MSDN文章ThreadPool线程是后台线程。来自文章:
当运行时停止后台线程因为进程正在关闭时,线程中不会抛出任何异常。
线程停止。它执行一条指令,从不执行下一条指令。 FileStream将作为CLR清理的一部分关闭。
答案 2 :(得分:2)
您可以通过调用Environment.Exit(0)
和Environment.Exit(1)
方法(成功退出并退出并出错)轻松尝试此情况。我认为该文件的所有句柄都将被删除,并且已经写入磁盘的唯一数据将保留,而不会刷新缓冲区。
通过该文件可能会因为某些奇怪的错误(例如The file is being used by another process
)或某些错误退出该过程而无法访问。