【发布时间】:2015-02-19 14:56:58
【问题描述】:
假设您使用ThreadPool 执行一些操作并假设每个操作都写入文件。 ThreadPool的所有线程都是后台线程,所以在关闭应用程序时会被终止。如果在ThreadPool 的线程正在向磁盘写入文件时关闭应用程序会发生什么?
【问题讨论】:
-
它会关闭文件的文件句柄并停止写入,可能会导致文件损坏。你试过这样做吗?
-
我应该通过写一个大文件来验证会发生什么。
-
结果很可能因使用的文件系统而异。 FAT 将显示 NTFS 以外的其他结果。
-
一般来说,如果您发现自己需要回答此类问题(这本身很有用,请不要误会我的意思),这可能表明您应该将设计更改为明显的正确,而不是依赖框架的优点。换句话说,如果您必须确保操作完成,请不要使用后台线程——或者假设您的应用程序可以随时关闭并使其文件损坏,并在启动时相应地处理这种情况。
标签: c# .net multithreading threadpool background-thread