1

我创建了一项服务,将目录中的某些文件类型移动到另一个目录中,这在本地运行良好,并且在我的网络上运行得非常快。在不同的网络上,虽然它的运行速度非常慢(一个 500mb 的文件需要 6 1/2 分钟),但是通过资源管理器复制并粘贴到文件夹中的相同文件在大约 30/40 秒内完成。

文件移动发生的片段。

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 中看到的类似的传输速度。任何指针都非常感谢。

4

2 回答 2

0

首先,相互 Ping 以检查延迟,以便您可以查看问题是网络中的全局问题还是与您的软件有关。

cmd ping 192.168.1.12 -n 10

如果是网络问题,请执行以下操作:

  1. 重启你的集线器/路由器
  2. 其中一台 PC 是否使用低信号 WiFi?
  3. 是否有任何已打开并监控网络活动的防病毒软件?

如果上述方法都不能解决您的问题,请尝试使用WireShark来进一步调查问题。

于 2012-10-19T16:26:05.830 回答
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 库

于 2012-10-19T16:31:35.153 回答