从文件系统中删除文件时发生线程中止错误

本文关键字:线程 错误 文件系统 删除 文件 | 更新日期: 2023-09-27 18:16:50

当试图从某个目录删除一些临时文件时,我得到错误"线程被中止"。我认为这个问题特定于下面的代码,因为在代码运行时应用程序池没有被回收(据我观察)。如果下面的代码段需要3-5秒才能成功运行。但是当文件数量较大时,我在12或15秒后得到错误。我认为这不是一个全局超时等等,因为还有其他线程比这个线程花的时间要长得多,但仍然没有被终止。是否与I/O操作有关?这段代码是:

DateTime now = DateTime.Now;
IEnumerable<string> directories = Directory.EnumerateDirectories(_pathOfTempFiles);
directories= directories.Concat(new[] { _pathOfTempFiles }); 
foreach (string dirPath in directories)
{
    DirectoryInfo di = new DirectoryInfo(dirPath);
    foreach (FileInfo fi in di.EnumerateFiles())
    {
        if (now.Subtract(fi.CreationTime).TotalHours >= 2 && !fi.Name.ToLower().Contains("web.config") && !fi.Name.ToLower().Contains("web.confıg"))
        {                        
            try
            {
                fi.Delete();                            
            }
            catch (Exception ex)
            {                                                        
                _messages.Add("Exception : " + ex.Message + " ~ " + fi.Name);
            }
        }
    }
}

从文件系统中删除文件时发生线程中止错误

胡乱猜测。不确定它是不是被回收了……是否有意删除触发应用程序池回收的文件?请求,因为这会导致线程中止…在2-3秒内,你可能会侥幸逃脱——应用程序将重新启动,但你不会看到线程中止。在错误的地方大量/长时间的删除会触发一系列的循环,使异常更有可能发生。

还有:有许多设置(如非活动超时等),这可能会使你的应用程序意外退出游戏。确保你没有碰到那个