У меня есть следующий код, который отлично работает для отправки файла по FTP, но он блокирует мой пользовательский интерфейс.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl + filename);
request.UsePassive = false;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(ftpUser, ftpPass);
request.Timeout = 10000; //10 second timeout
byte[] fileContents = File.ReadAllBytes(fullPath);
request.ContentLength = fileContents.Length;
//Stream requestStream = await request.GetRequestStreamAsync();
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
Я хочу переключить поток на закомментированную строку, поэтому я вызываю асинхронно и не блокирую свой пользовательский интерфейс, и он работает нормально, за исключением времени ожидания, которое согласно документам предназначено только для синхронного использования.
Вопрос в том, как заставить тайм-аут работать при асинхронном вызове?