6
我试图使用SSH.NET从SFTP服务器异步下载文件。如果我同步执行,它可以正常工作,但是当我执行异步时,我会得到空文件。这是我的代码:SSH.Net异步文件下载
var port = 22;
string host = "localhost";
string username = "user";
string password = "password";
string localPath = @"C:\temp";
using (var client = new SftpClient(host, port, username, password))
{
client.Connect();
var files = client.ListDirectory("");
var tasks = new List<Task>();
foreach (var file in files)
{
using (var saveFile = File.OpenWrite(localPath + "\\" + file.Name))
{
//sftp.DownloadFile(file.FullName,saveFile); <-- This works fine
tasks.Add(Task.Factory.FromAsync(client.BeginDownloadFile(file.FullName, saveFile), client.EndDownloadFile));
}
}
await Task.WhenAll(tasks);
client.Disconnect();
}
@YuvalItzchakov,修正了,谢谢! –
谢谢你的回答,但是,当我尝试这个时,我仍然得到相同的空文件。也没有例外。 – spersson
@spersson,我更新了我的答案。看起来使用'BeginDownloadFile'没有优势,所以你最好使用同步版本。 –