如何确定下载是否已完成?

时间:2014-05-02 22:40:55

标签: c# ssh

要通过C#从SSH服务器下载文件,我使用Renci.SshNet。 基本代码是:

try
{
    using (var sftp = new SftpClient(host, username, password))
    {
        sftp.Connect();                    

        using (var file = File.OpenWrite(localFileName))
        {
            sftp.DownloadFile(remoteFileName, file);                      }
        }
        sftp.Disconnect();
    }
}
catch (Exception ex)
{
    tbMessages.AppendText(ex.Message);
}

由于文件大小可能很大,因此在下载完成之前需要一段不可预测的时间。但我必须使用下载的文件。如何找出下载是否已经完成?

1 个答案:

答案 0 :(得分:0)

如果这是同步调用,则只有在下载完成或引发异常时才会将控制权返回给调用方法。

看看对DownloadFile方法的调用,它似乎不是异步的,因为不需要回调方法,因此相当平淡的答案是它会在完成时完成;您的代码将从该行继续 - 尽管您需要关闭

上的括号
using (var file = File.OpenWrite(localFileName)) 

语句!