Tôi đang phát triển ứng dụng C# ghi 300 tệp nhỏ (1k) vào hệ thống tệp cục bộ (NTFS). Trong thời gian này, explorer.exe sử dụng tới 100% thời gian của CPU.
Những điều tôi đã sắp xếp:
- Đảm bảo không có cửa sổ Explorer nào đang mở hiển thị thư mục đích
- Loại trừ việc lập chỉ mục thư mục đích
- Loại trừ việc lập chỉ mục cho toàn bộ ổ đĩa
- Dừng và tắt dịch vụ Windows Search (SearchIndexer.exe)
Tất cả những điều này không có tác dụng.
Khi tôi sử dụng Sysiternals ProcessExplorer, tôi thấy một chuỗi explorer.exe bận rộn cho biết:
ntdll.dll!RtIFreeUnicodeString+0x1370
Ngăn xếp của nó trông như thế này:
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 đang làm gì ở đây? Có sự phụ thuộc trực tiếp giữa hệ thống tập tin và trình quản lý tài nguyên không? Làm cách nào tôi có thể ngăn chặn hành vi này?
Cảm ơn tất cả các ý kiến của bạn. Tôi đã có thể theo dõi thời gian CPU mà Windows Defender tiêu thụ, được explorer.exe thông báo về các tệp mới
Việc loại trừ một số thư mục liên quan sẽ giúp ích.
Điều khiến tôi bối rối là CPU được sử dụng bởi người thám hiểm chứ không phải người bảo vệ...nếu không thì điều đó sẽ rõ ràng hơn
Tôi là một lập trình viên xuất sắc, rất giỏi!