2012-09-15 5 views
0

VSS interop DLL과 .NET을 사용하여 새 프로젝트를 만들고 각 프로젝트에 XML 파일 수를 저장합니다.방대한 수의 파일 추가 및 WPF 응용 프로그램에서 VSS 프로젝트 만들기

기본적으로 프로세스는 동일한 도메인의 VSS에 연결됩니다. 기본 정의 프로젝트에서 1000 개 이상의 하위 프로젝트를 만들어야하며, 각각에 대해 데이터베이스에서 xml 파일을 가져 와서 임시 위치의 파일 스트림에 쓴 다음 VSS에 추가합니다.

  • 하위 프로젝트가 이미있을 수 있으므로 VSSItem이 이미 있는지 확인한 다음 모든 VSSItem을 검사하여 저장하려고하는 파일 이름이 있는지 확인합니다.
    • 경우 예, 새로운 파일을 체크, 임시 위치에 파일을 확인하고 체크 아웃 임시 위치에 다른
    • 에서 파일을 삭제하고, 새 파일을 추가
  • 과의
  • 마지막으로 파일 스트림이 저장된 임시 위치를 삭제하십시오.

1000+ 개 항목에 대해서는 위의 과정을 수행해야합니다. 이 모든 과정은 약 20 분이 걸립니다. 프로세스가 비동기이므로 자체 스레드에서 실행 중입니다.

여기 WPF 및 WCF를 사용하고 있으므로 때때로 WPF의 구성 파일에서 제한 시간을 늘려서 방지 할 수있는 SendTimeout을 수신합니다.

내 질문은입니다 : VSS 처리가 항상 느려지고 어떻게 속도를 높일 수 있습니까?

코드를 검토하려고 시도했지만 그 코드를 많이 개선 할 방법을 찾지 못했습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

일부 병렬 처리가 가능합니다. 다음 파일을 복사하는 것처럼 체크 아웃/체크 인 현재. 솔리드 스테이트 디스크. – Paparazzi

+0

나는 temp에 구조를 저장하고 각 파일을 지우는 대신 전체 디렉토리를 지우려고했지만 몇 초만 주었다. 또한 프로젝트와 파일이 처음 추가되면서 프로젝트 200 개를 추가하고 파일 당 파일 몇 개를 추가하면 거의 4-5 분이 소요됩니다. 우리는 2000 개가 넘는 프로젝트와 파일이 처리 될 것으로 기대합니다. 가슴이 VSS 밖에없는 것 같은 느낌입니다. – VK123

+1

당신은 여전히 ​​VSS를 사용하고 있습니까? 그리고 그것에 대해? _new_ 개발을 위해? 나는 당신을 위해기도하는 것을 기억하려고 노력할 것입니다. –

답변

0

솔직히 나는 직장에서 VSS를 사용하고 C#에서 유사한 프로세스를 수행하는 앱을 작성했으며 VSS라는 결론에 도달했습니다. 내 질문에 대한 답변 : VSS는 주 목적은 체크 인/체크 아웃 기능으로 소스 코드를 제어하는 ​​것이므로 속도가 빠르며 코드를 변경할 수있는 가능성이 거의 없습니다. 언급 된 Blam이 당신에게 시간을 벌지 만 그것을 절반으로 줄이지는 않을 것입니다.