要通过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);
}
由于文件大小可能很大,因此在下载完成之前需要一段不可预测的时间。但我必须使用下载的文件。如何找出下载是否已经完成?
答案 0 :(得分:0)
如果这是同步调用,则只有在下载完成或引发异常时才会将控制权返回给调用方法。
看看对DownloadFile方法的调用,它似乎不是异步的,因为不需要回调方法,因此相当平淡的答案是它会在完成时完成;您的代码将从该行继续 - 尽管您需要关闭
上的括号using (var file = File.OpenWrite(localFileName))
语句!