У меня есть элемент управления, который загружает файлы 1..n порциями в мою службу WCF. Разделение на части и повторная сборка выполняется с помощью нескольких вызовов службы WCF, которая хорошо работает для 1 файла.
Однако, когда у меня более 1 файла, я сталкиваюсь с некоторыми проблемами. Внешний цикл, содержащий данные для каждого файла, продолжается до завершения загрузки первого файла. На самом деле, если требуется 10 вызовов для разбиения файла на сервер с помощью вызовов WCF, обработка возвращается после 1-го вызова WCF, потому что он асинхронный без блокировки. Весь этот процесс инициируется нажатием кнопки Upload, поэтому я предполагаю, что это делается в потоке пользовательского интерфейса. Я пытался использовать AutoResetEvent, но безрезультатно; оно всегда замерзает.
Что мне нужно, так это внешний цикл для остановки обработки до тех пор, пока асинхронные вызовы 1..n в WCF внутри (через метод ProcessFile) не будут завершены и не будет загружен целый файл. Код ниже:
'FileUploadData is an Observable collection of IO.FileInfo objects
For Each FileItem In FileUploadData
'Method internally calls WCF asynchronously and does so continually until file is completely uploaded.
ProcessFile(FileItem)
'NEED TO STOP HERE until file passed in above is complete.
'Currently processing continues on because 1st call to WCF is async and processing is returned to here.
Next
Я не обязательно ищу здесь синхронное решение, но мне нужен какой-то метод, позволяющий загружать эти файлы в их собственный поток или загружать полностью в методе «ProcessFile» 1-й (по-прежнему вызывая WCF async) перед продолжением внешнего цикла до следующего файла, показанного выше.
Есть идеи, как это решить? Спасибо!