동시에 처리해야하는 파일 목록이 있습니다. ParallelQuery 클래스의 ForAll 확장 메서드를 사용하려고했습니다. 나는 순서대로 처리 할 파일이 없으므로 ForAll을 사용했습니다.ParallelQuery.ForAll의 ID 증가 방법
List<FileInfo> files = GetFilesToProcess();
files.AsParallel().ForAll(f => { // Process file here });
그것은 잘 작동하지만 지금은 파일의 각과를 ForEach에 AsParallel.ForAll을 변경하지 않고 그것을 할 어떻게 확실하지에 대한 고유 한 정수 ID를 생성해야합니다
여기 내 예제 코드입니다 .
내가 연동 된 것처럼 어딘가에 읽었지만 여전히 문제가있을 것입니다.
희망은 나에게 아이디어를 줄 수 있습니다.
감사합니다.
안녕하세요, 귀하의 제안 된 솔루션과 답장을 보내 주셔서 감사합니다. Parallel For/ForEach를 사용하면 ForAll에서와 같이 병렬로 실행된다는 것을 명확히하고 싶습니다. 미안합니다. 당신이 바보 같은 질문이라고 생각한다면. 그냥 확인하고 싶습니다. – lionheart
@lionheart 예 - 두 가지 접근 방식이 있습니다. 일반적으로 어떤 형태의 필터링 연산 ('.Where')이나 맵 연산 ('.Select')을 수행하고 있다면 PLINQ ('.AsParallel()')을 사용할 것입니다. '.ForAll()'메소드는 "쿼리"의 결과에 대한 작업을 할 때 단순화하기 위해 도입되었습니다. 귀하의 목표가 단지 "병렬로 작업을 수행"하는 것이라면, Parallel.For와 Parallel.ForEach가 훨씬 더 적합합니다. 이유에 대해 좋은 논거를하려면 http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx –
을 읽어보십시오. 감사 리드! – lionheart