我创建了一个服务,将某个目录中的某些文件类型移动到另一个文件类型,这在我的网络上可以很好地在本地工作。虽然它工作速度非常慢(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);
}
我担心代码很好(因为它在其他网络上按预期工作)所以问题可能是网络,某种形式或形式。有没有人有任何常见的检查技巧,该服务作为本地系统(或网络服务)运行,似乎没有访问问题。还有哪些因素会影响这一点(网络/硬件除外)。
我想要的是具有与我在资源管理器中见过的相似的传输速度。任何指针都非常感激。
答案 0 :(得分:0)
首先 相互ping通以检查延迟,以便您可以查看问题是在网络中是全局问题还是与您的软件有关。
cmd ping 192.168.1.12 -n 10
如果网络出现问题,请按照以下步骤操作:
如果上述方法都无法解决您的问题,请尝试使用WireShark进一步调查此问题。
答案 1 :(得分: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。