c# - 从文件系统中删除文件时线程被中止错误

标签 c# .net multithreading iis io

我在尝试从某个目录中删除一些临时文件时收到错误消息“Thread was being aborted”。我认为这个问题特定于下面的代码,因为在代码运行时应用程序池没有被回收(据我观察)。 如果需要 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);

            }
        }
    }
}

最佳答案

一个大胆的猜测。不确定它没有被回收...你是deleting the files哪个触发应用程序池回收设计?询问“因为这可能会导致线程中止……在 2-3 秒内您可能会逃脱 - 应用程序无论如何都会重新启动,但您不会看到线程中止。在错误的地方进行大量/长时间的删除会触发一系列回收,从而更有可能出现异常。

此外:有许多设置(如不活动超时等)可能会使您的应用程序意外退出游戏。确保你没有击中那个。

关于c# - 从文件系统中删除文件时线程被中止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161564/

相关文章:

c# - 从 Controller 在 MVC 强类型 View 上强制执行所需的参数?

c# - 显示 WinForms 对话框后,System.Progress 未在主线程上触发事件

c# - .Disposing StreamWriter 是否关闭底层流?

.net - 微软 Jabber 的替代品?

java - JVM如何保证只有一个线程可以获取对象的锁?

c - 打开 MP : Symmetric matrix multiplication for Sparse matrices

c# - 在 1 个地方声明类型同义词并在多个文件中使用它

c# - 如何使用 C# 在文本中查找重复出现的词组?

c# - 手动创建启用 JSON 的 WCF Svc 服务

c++ - 如何声明和使用 "one writer, many readers, one process, simple type"变量?