#vb.net #file-upload #ftp #webclient
#vb.net #загрузка файла #ftp #webclient
Вопрос:
После моего vb.net код использует WebClient для выполнения загрузки FTP UploadFileAsync, вызывается эта подпрограмма:
Выполнен дополнительный FtpCompleted (отправитель указан как объект, e указан как Net.UploadFileCompletedEventArgs) End Sub
Загрузка выполняется, и вызывается подпрограмма… но какой код я бы поместил внутрь него … чтобы получить информацию, подобную:
Имя исходного файла, который только что был завершен? Имя файла назначения? Количество переданных байтов? Номер ошибки или успешного завершения? Ошибка или строка успеха? Время начала загрузки?
Какая информация МНЕ доступна… когда все, что у меня есть, это переменные SENDER и E?
Ответ №1:
Для исходного файла при запуске асинхронного процесса вы можете указать объект пользовательского токена и ссылаться на него в объекте e.userstate. Это всего лишь простой объект, поэтому вы можете поместить в него все, что вам нравится, чтобы отслеживать, что вышло. Насколько я понимаю, я никогда не использовал объект e.userstate.
Что касается ошибки или успеха, всякий раз, когда вы ссылаетесь на асинхронные завершенные события, вы всегда должны сначала проверить, не является ли e.error ничем, прежде чем ссылаться на какие-либо другие свойства e . Если значение e.error равно нулю, а значение e.cancelled равно нулю, передача прошла успешно. Если e.error ничего не значит, проверьте e.error, чтобы обнаружить ошибку. Не ссылайтесь на e.result, если что-то связано с e.error, потому что это вызовет исключение.
Кроме того, не ссылается ли objct отправителя на исходный объект, который вы использовали для отправки файла? Выполните преобразование Ctype, и вы сможете получить подробную информацию о том, что вы отправили.