ファイルをアップロードするために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は問題ありませんか? –
1つのアプリケーションで数千のtheadを使用するのは良い方法ではありません。アプリケーションのスレッド数が増えるほど、各スレッドの実行時間が短縮されます。たとえば、50-50で何千ものファイルを分離し、各非同期スレッドを50個の非同期スレッドで順次アップロードできます。 –
@Martinは、セッションクラスはすべてのファイルをキューに入れると述べています。 –