모든 파일과 폴더를 반복하고 특정 확장명을 가진 모든 파일에 대해 작업을 수행하려고합니다. 이 방법은 잘 작동하지만, 수만개 이상의 파일을 처리 할 때 속도가 느리고 멀티 스레드를 사용하는 이미징을 사용하면 작업 속도가 빨라지기 때문에 다중 스레드로 만들고 싶습니다. 나는이 경우 스레딩을 사용하는 방법에 대해서 확신 할 수 없다.C#의 다중 스레드 디렉터리 반복
doStuff
속성 (날짜는 파일에서 등을 수정 읽고. 나는 그것을 할 수있는 그이 많이 최적화 있도록 검색 방법 호출하기 전에 트랜잭션을 시작하고 SQLite는 데이터베이스에 삽입합니다.
그것은 전체 작업 코드 답만큼 좋은 수행하는 방법에 대한 이론을 제공하는 답변.
private static string[] validTypes = { ".x", ".y", ".z", ".etc" };
public static void scan(string rootDirectory)
{
try
{
foreach (string dir in Directory.GetDirectories(rootDirectory))
{
if (dir.ToLower().IndexOf("$recycle.bin") == -1)
scan(dir);
}
foreach (string file in Directory.GetFiles(rootDirectory))
{
if (!((IList<string>)validTypes).Contains(Path.GetExtension(file)))
{
continue;
}
doStuff(file);
}
}
catch (Exception)
{
}
}
이것은 주제와는 거리가 있지만 모든 예외를 포착해서는 안됩니다. –
예, 동의합니다. 그 부분을 제거했습니다 (이것은 winforms 응용 프로그램이기 때문에). –
왜 멀티 스레드가 어떤 것을 가속화 할 것이라고 생각합니까? ** 쓰레드는 마술처럼 빠르게 디스크를 실행시키지 않습니다. ** 디스크 컨트롤러는 이제 더 많은 일을 동시에 할 수 있기 때문에 쓰레드는 디스크를 더 느리게 실행할 수 있습니다. 왜 멀티 스레드 솔루션이 더 빠를 것이라고 생각하는지 설명 할 수 있습니까? –