windows - 自己的程序写入 300 个小文件。在那段时间里,explorer.exe 占用了近 100% 的 CPU 时间

标签 windows windows-8.1 windows-explorer ntfs

我开发的 C# 应用程序将 300 个小 (1k) 文件写入本地文件系统 (NTFS)。 在此期间,explorer.exe 使用高达 100% 的 CPU 时间。

我已经整理好的东西:

  • 确保没有资源管理器窗口打开显示目标文件夹
  • 排除目标文件夹的索引
  • 为整个驱动器排除索引
  • 停止并禁用“Windows 搜索”服务 (SearchIndexer.exe)

所有这些都没有效果。

当我使用 Sysinternals ProcessExplorer 时,我看到 explorer.exe 的一个繁忙线程大部分时间都在声明:

ntdll.dll!RtIFreeUnicodeString+0x1370

它的堆栈看起来像这样:

0  msvcrt.dll!memcpy+0x8a
1  SHELL32.dll!Ordinal755+0x75c
2  SHELL32.dll!PathYetAnotherMakeUniqueName+0x35316
3  SHELL32.dll!ExtractIconExW+0xed8
4  SHELL32.dll!ExtractIconW+0x98e5
5  SHELL32.dll!SHChangeNotification_Lock+0x4179
6  SHELL32.dll!DAD_SetDragImage+0x1018
7  SHELL32.dll!DAD_SetDragImage+0x11ef
8  SHCORE.dll!GetProcessReference+0x3f
9  ntdll.dll!RtlDestroyHeap+0x317
10 ntdll.dll!RtlFreeUnicodeString+0x17d5
11 KERNEL32.DLL!BaseThreadInitThunk+0xd
12 ntdll.dll!RtlUserThreadStart+0x34

explorer.exe 在这里做什么?文件系统和资源管理器之间是否存在直接依赖关系? 我怎样才能防止这种行为?

最佳答案

感谢您的所有评论。我能够追踪到 Windows Defender 消耗的 CPU 时间,它被 explorer.exe 通知了新文件

排除一些相关目录有帮助。

令我困惑的是,CPU 被资源管理器消耗,而不是防御者...... 否则会更明显

关于windows - 自己的程序写入 300 个小文件。在那段时间里,explorer.exe 占用了近 100% 的 CPU 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973104/

相关文章:

windows - 以编程方式最小化/恢复窗口跳过动画效果

c++ - 使用英特尔 C++ 编译器 2015 Windows 构建 Boost 1.56

c# - 为什么我的上下文菜单条目是小写的?

delphi - 如何使 Delphi tlistview 像资源管理器一样工作

c# - Win2D中如何计算一段文字的大小

python - 从 python 打开 Windows 照片库

windows - 我删除了 AppData/Packages 中的文件,一些应用程序无法运行

c# - 如何以编程方式将 TypedEventHandler 添加到 RoutedEvents?

Windows 资源管理器外壳扩展 : create file and enter "rename" mode

c - 在 C (Windows) 中检测 USB 驱动器插入