나는 파일 시스템에서 작동하는 응용 프로그램을 작성 중입니다. 앱이 처음 시작될 때, 빠른 루틴을 실행하여 요청 된 파일과 폴더를 나중에 (시간 집약적 인) 처리를 위해 메모리에로드합니다. (아래 코드 참조). 이 시점에서 진행률 표시 줄을 표시하는 데 중요한 파일의 수를 계산합니다."var"를 전역 또는 영구으로 만들려면 어떻게해야합니까?
일단 개수와 파일 데이터가 있으면 나중에 처리 할 수 있도록 데이터를 저장해야합니다 (예 : 전역 변수 또는 속성 또는 클래스). 문제는 LINQ를 사용하기 때문에 필요에 따라 "var"로 저장된다는 것입니다. 변수를 깨고 검사하면 SelectQueryOperator와 AnonymousType이 다소 복잡하게 혼합되어 저장됩니다.
내 첫 번째 생각은 데이터를 반복하여 목록 <> (예 : 파일 이름과 경로 저장)로 저장할 수있는 간단한 데이터로 변환했지만 말 그대로 처리하는 데는 최대 10 분이 소요됩니다. 또는 그 이상 - 처리 할 수 있습니다. 나중에 처리하기 위해 나중에 모든 데이터를 반복해야 할 것입니다. 사용자가 앉아서 목록을 먼저 만들 때까지 기다릴 방법이 없습니다.
이 데이터를 나중에 다른 것으로 변환하지 않고도 나중에 액세스 할 수 있도록 저장할 수 있습니까?
var fileNames =
from dir in Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
select dir;
var fileContents = from file in fileNames.AsParallel()
// Use AsOrdered to preserve source ordering
let extension = Path.GetExtension(file)
let Text = File.ReadAllText(file)
select new { Text, FileName = file };
아마도 시간이 걸리는 File.ReadAllText 일 것입니다. 여기서해야합니까? 나중에 처리하기 위해 파일 이름을 저장하지 않으시겠습니까? – Polyfun
모든 파일의 전체 텍스트를 저장할 충분한 메모리가 없을 수도 있습니다. – Servy