c# - SharpSSh : Restart file transfer if current file transfer too slow?

标签 c# .net ssh .net-4.0 sftp

我的代码将文件从远程服务器下载到我们的服务器。

通常,一个文件最多需要一分钟左右的时间才能完成下载。但有时下载时间会超过 5 分钟。

如果当前下载时间超过 5 分钟,是否可以重新开始下载?

Tamir.SharpSsh.SshTransferProtocolBase sshCp;
sshCp = new Scp(sessionOptions.HostName, sessionOptions.UserName);
sshCp.Password = sessionOptions.Password;
sshCp.Connect();

foreach (UmtsFilesStruct u in Array)
{
    try
    {
        sshCp.Get(u.RemoteFilePath, u.LocalFilePath);
    }
    catch (Exception ex)
    {
        using (StreamWriter w = File.AppendText(Logger._LogName))
        {
            string error = string.Format("error downloading file [{0}], Remote: {1} & Local: {2} ",
                ex.Message, u.RemoteFilePath, u.LocalFilePath);
            Logger.Log(error, w);
        }
    }
}

最佳答案

您可以尝试使用 System.Diagnostics.Stopwatch 作为计时器。当 timer.Elapsed >= TimeSpan.FromMinutes(5) 关闭您的连接并再次运行您发布的代码。如果某个实例的文件下载时间少于 1 分钟,您一定不要忘记停止计时器并将其值重置为零,以防止在实际下载文件时再次下载。

附言如果您在使用 System.Diagnostics.Stopwatch

时遇到问题,您也可以尝试使用 System.Timers.Timer

关于c# - SharpSSh : Restart file transfer if current file transfer too slow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699796/

相关文章:

c# - 如何将自定义对象的集合存储到 user.config 文件中?

c# - 无法将类型 System.Linq.IQueryable 隐式转换为 System Collections.Generic.IEnumerable

c# - 是否可以使用匹配结果的反向引用作为另一个捕获组的匹配?

c# - OData 中的实体继承

c# - CUDA .Net 比较字符串

c# - 如何使用 LINQ 返回 FileInfo.Name 的子字符串

c# - 处置由 WCF ChannelFactory 创建的 Channel

github - SSH认证后仍需要登录

python - 在 Python/Bash 中通过 SSH/Sudo 测试文件/目录是否存在

python - 是否可以通过 Visual Studio Code 使用远程 ssh 解释器运行本地 python 脚本?