private async void button1_Click(object sender, EventArgs e)
{
await BackupFile();
}
public async Task BackupFile()
{
await Task.Run(() =>
{
for (var i = 0; i < partCount; i++)
{
upload(FilePart);//how to creat a new task at here
//i don't want to wait here, i want to upload all part at same time
}
//wait here.
//if total part got 10, then how to wait 10 task complete
//after 10 task complete
Console.WriteLine("Upload Successful");
});
}
Как создать новую задачу в цикле и как ждать всю задачу полностью, чтобы выполнить код следующей строкиКак создать задачу в цикле и ждать всю задачу полного
когда-либо слышал о 'async'? это кажется правильным для этой ситуации. после переписывания вашего 'upload'-mehtod в async вы можете вызвать somtehing как' wait upload (FilePart); 'который ждет, пока операция не будет завершена. – cramopy
Вы можете просто использовать 'Parallel.For' и ограничить параллелизм, но если' upload' можно назвать async, у вас есть лучшие варианты. См. Http://stackoverflow.com/a/11565317/224370 для примера параллельного выполнения задач async. –
Я нахожусь на телефоне только для комментариев, но вы захотите сделать свою функцию 'upload' async, создайте' List 'перед циклом' for ', замените' upload (FilePart) 'на' myList.Add (upload (FilePart)) 'и, наконец, добавить' wait Task.WhenAll (myList) 'после цикла' for'. Если вы не получили ответа в течение нескольких часов, когда я вернусь к компьютеру, я дам полный ответ. –
JRLambert