Я разрабатываю приложение C# Winforms, часть приложения будет загружать файлы на веб-сервер с помощью AsyncUpload (используя его из-за необходимости использования обратного вызова porgress). C# программыC#: блокирование вызова функции до тех пор, пока не будет выполнено условие
я получил простой цикл, который вызывает функцию загрузки
for(int i=0;i < 10 ; i++)
{
Uploadfun();
}
И весело делают некоторые магии:
Uploadfun()
{
// Logic comes here
// webClient.UploadFileAsync runs a 2nd thread to perform upload ..
webClient.UploadFileAsync(uri, "PUT", fileNameOnHD);
}
И обратный вызов, который вызывается ш курица загрузка Асинхронный делается
Upload_Completed_callback()
{
//Callback event
}
Редактировать
Логика последовательности:
- Fun вызывается (из цикла)
- Fun логика выполнена и сделано ..
- Возврат к циклу
- Обратный звонок будет называться eventuall y, когда UploadFileAsync (который запускает некоторую логику в другом потоке) закончится
Проблема на третьей точке, когда выполнение возвращается в цикл for, мне нужно заблокировать цикл от продолжения до тех пор, пока callback вызывается.
У вас есть доступ к реалистичной игре? Вероятно, вам следует рассмотреть возможность предоставления синхронного интерфейса, на котором реализован асинхронный API. –
Как вы его описываете, ваш код кажется последовательным и однопоточным, что означает, что до тех пор, пока функция 'callback' не будет вызвана, цикл не будет продолжен. Пожалуйста, поправьте меня, если я ошибаюсь, давая более подробное объяснение. –
@Madi: Тогда вы делаете это назад. Вы должны использовать синхронную версию 'UploadFile' в основе логики и использовать асинхронный API поверх нее, если вам это нужно. –