2012-10-19 3 views
1

디렉터리의 특정 파일 형식을 다른 파일 형식으로 이동시키는 서비스를 만들었는데, 이는 내 네트워크를 통해 로컬에서 매우 빠르게 작동합니다. 다른 네트워크에서는 엄청나게 느리지 만 (500mb 파일은 6 분의 1 분 소요) 탐색기를 통해 복사 된 동일한 파일은 약 30/40 초 만에 완료됩니다.C# File.Move 서비스가 네트워크 속도가 느리다.

파일 이동이 일어나는 스 니펫.

currentlyProcessing.Add(currentFile.FullName); 
try 
{ 
    eventMsg("Attempting to move file","DEBUG"); 

    File.Move(oldFilePath, newFilePath); 
    eventMsg("File Moved successfully","DEBUG"); 


} 
catch (Exception ex) 
{ 
    eventMsg("Cannot Move File another resource is using it", "DEBUG"); 
    eventMsg("Move File Exception : " + ex, "DEBUG"); 

} 
finally 
{ 
    if(File.Exists(currentFile.FullName + ".RLK")) 
    { 
     try 
     { 
      File.Delete(currentFile.FullName + ".RLK"); 
     } 
     catch (IOException e) 
     { 
      eventMsg("File Exception : " + e, "DEBUG"); 
     } 

    } 
    currentlyProcessing.Remove(oldFilePath); 
} 

나는 (그것을 다른 네트워크에서 예상대로 작동하기 때문에) 그래서 문제가 어떤 모양이나 형태, 아마 네트워크 인 코드가 괜찮 우려하고있다. 누구든지 로컬 시스템 (또는 네트워크 서비스)으로 서비스가 실행되고 액세스 문제가없는 것 같습니다. 네트워크/하드웨어 이외의 다른 요소가이 영향을 미칩니다.

내가 원하는 것은 Explorer에서 목격 한 것과 비슷한 전송 속도를 갖는 것입니다. 모든 포인터 크게 감사.

+0

네트워크를 통해 파일을 이동하는 데 ftp 또는 기타 파일 전송 프로토콜을 사용해야한다고 생각합니다. – dotNETbeginner

답변

0

우선 대기 시간을 확인하기 위해 서로 핑 (ping)하여 문제가 네트워크에 있는지 아니면 소프트웨어와 관련이 있는지를 확인할 수 있습니다.

cmd ping 192.168.1.12 -n 10 

가 네트워크에 문제가이를 따라 있어요 경우 : PC를

  • 하나는 낮은 신호와 무선 랜을 사용

    1. 이 허브/라우터 다시 시작?
    2. 켜져 있고 네트워크 활동을 모니터링하는 AntiVirus가 있습니까?

    위의 방법으로 문제가 해결되지 않으면 WireShark을 사용하여 문제를 자세히 조사하십시오.

  • 0

    거대한 크기의 파일의 경우 네트워크 대기 시간이 항상 인터넷을 통한 파일 업로드/다운로드와 관련된 큰 요소이기 때문에 가능하면 압축하는 것이 좋습니다. System.IO.Packaging으로 파일을 압축 할 수 있습니다. 특히, 여기 Using System.IO.Packaging to generate a ZIP file 보라 : 또한

    using (Package zip = System.IO.Packaging.Package.Open(zipFilename, FileMode.OpenOrCreate)) 
         { 
          string destFilename = ".\\" + Path.GetFileName(fileToAdd); 
          Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative)); 
          if (zip.PartExists(uri)) 
          { 
           zip.DeletePart(uri); 
          } 
          PackagePart part = zip.CreatePart(uri, "",CompressionOption.Normal); 
          using (FileStream fileStream = new FileStream(fileToAdd, FileMode.Open, FileAccess.Read)) 
          { 
           using (Stream dest = part.GetStream()) 
           { 
            CopyStream(fileStream, dest); 
           } 
          } 
         } 
    

    , 당신은 가능하면 언급 한 다른 사용자로 FTP해야 할 수 있습니다. CodePlex의 Renci SSHNet library을 확인하십시오.

    관련 문제