Ich versuche, Dateien asynchron von einem SFTP-Server mit SSH.NET herunterladen. Wenn ich es synchron mache, funktioniert es gut, aber wenn ich es async mache, bekomme ich leere Dateien. Dies ist mein Code:SSH.Net Async-Datei herunterladen
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, fest, danke! –
Vielen Dank für die Antwort, aber ich bekomme immer noch die gleichen leeren Dateien, wenn ich das versuche. Keine Ausnahme auch nicht. – spersson
@spersson, habe ich meine Antwort aktualisiert. Es scheint, dass es keinen Vorteil gibt, 'BeginDownloadFile' zu verwenden, also können Sie auch die synchrone Version verwenden. –