我正在使用WinSCP .NET程序集上传文件。我想以异步的方式上传多个文件。我创建了一个方法,但它作为单一上传。C#WinSCP .NET程序集:如何异步上传多个文件
public class UploadingData {
private SessionOptions _sessionOptions;
private Session _session;
//connection etc
private void OnConnected() {
foreach (var fileInfo in localFilesList)
{
var task = Task.Factory.StartNew(() => UploadFilesAsync(fileInfo));
}
}
private async Task UploadFilesAsync(string file) {
string remoteFilePath = _session.TranslateLocalPathToRemote(file, @"/", "/test_data_upload");
var uploading = _session.PutFiles(file, remoteFilePath, false);
//When Done
await Task.Run(() => Thread.Sleep(1000));
}
}
请给我正确的方法。由于
如果需要我上传成千上万的文件,那么会有成千上万的后台工作人员。对应用程序和CPU来说是好的吗? –
在一个应用程序中使用成千上万的磁盘并不好。因此,您的应用程序拥有线程越多,每个线程执行的配额时间就越少。例如,您可以将数以千计的文件分开50-50,然后使用50个异步线程按顺序上传每个部分。 –
正如@Martin所说的Session类将所有文件放入队列中。 –