나는이 코드를 가지고있다. (지금까지 도움이 된 덕분에)열거 파일이 같은 파일을 두 번 이상 반환하는 이유는 무엇입니까?
파일 이름을 찾는 디렉토리와 모든 하위 디렉토리를 검색한다. 나는 단지 1, 그것을 추가의 Files
4 배가 알고있는에 textBox1.text
를 설정하면
Files.Clear(); //BindingList<FileInfo> Datasource for a datagridview
Task.Factory.StartNew(() =>
{
DirectoryInfo dir = new DirectoryInfo(MainFolder);
foreach(var file in dir.EnumerateFiles("*" + textBox1.Text + "*.doc?", SearchOption.AllDirectories).Take(200))
{
this.BeginInvoke(new Action(() =>
{
Files.Add(file);
}));
}
});
문제입니다. 나는 그것이 그것을 어떻게 나타내고 있었는지 확신 할 수 없다는 것을 지적하면서 휴식을 시도했다.
4 개의 개체를 서로 비교 한 결과 동일합니다. 검색 기준을 조금 열고 5 가지 결과를 얻으면 그 중 일부는 1이고 일부는 3 배가됩니다. 그래서 5 개의 유일한 결과가 있지만 약 10-12의 합계가 있습니다.
내가 뭘 잘못하고 있니?
위의 코드 대부분을 작성하지 않은 상태에서 조금 더 명확하게 표현할 수 있습니까? 그리고 그 코드를 사용하여 연주하는 동안 훨씬 더 의미가 있습니다. 파일 변수가 변형되는 위치를 표시 할 수 있습니까? 나는 invoke를 사용하고 있다고 생각했다. –
BeginInvoke가 파일 열거 코드와 동시에 람다를 호출 중입니다. 다음 루프 반복이 시작되면 변수 파일에 다음 파일이 포함됩니다. 그러나 당신의 람다는 오래된 것을 기대했습니다. 다른 해결책은 먼저 로컬 변수에 파일을 복사하는 것입니다. – usr
BeginInvoke가 아닌 Invoke를 사용하십시오. – usr