public void ListFinish(IAsyncResult ar) { FtpWebResponse response = null; try { ListFileAsyncState stateObj = ar.AsyncState as ListFileAsyncState; FtpWebRequest request = stateObj.Request; _currentPath = stateObj.Path; response = (FtpWebResponse)request.EndGetResponse(ar); _result = response.StatusDescription; ServerFiles = ServerFileInfo.Parse(response.GetResponseStream()); } catch (Exception e) { if (response != null) { _result = response.StatusDescription; } else { _result = e.Message; } } finally { if (response != null) { response.Close(); } _listFileRequestFinished = true; } }
private void EndGetResponseCallback(IAsyncResult ar) { FtpWebRequest uploadRequest = (FtpWebRequest)ar.AsyncState; //结束由BeginGetResponse启动的挂起的异步操作 FtpWebResponse uploadResponse = (FtpWebResponse)uploadRequest.EndGetResponse(ar); Console.WriteLine(uploadResponse.StatusDescription); Console.WriteLine("Upload complete"); }
private void UploadNextFile(IAsyncResult ar) { //清空 _currLength = 0; _abort = false; if (_uploadResponse != null) { _uploadResponse.Close(); } if (_fileStream != null) { _fileStream.Close(); } if (_requestStream != null) { _requestStream.Close(); } _uploadResponse = (FtpWebResponse)_uploadRequest.EndGetResponse(ar); //_result = "文件上传成功"; try { if (_uploadFiles.Count != 0) { FileInfo file = _uploadFiles[0] as FileInfo; ServerFileInfo serverFile = SearchFile(file.Name.Replace('#', '_')); if (serverFile != null) { _currLength = serverFile.Size; } else { _currLength = 0; } string uploadUrl = @"ftp://" + this.Address + ":" + this.Port + "/" + file.Name.Replace('#', '_'); _uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl); if ((bool)_uploadFilesStateTable[file]) {//覆盖 _uploadRequest.Method = WebRequestMethods.Ftp.UploadFile; _currLength = 0; } else { _uploadRequest.Method = _currLength == 0 ? WebRequestMethods.Ftp.UploadFile : WebRequestMethods.Ftp.AppendFile; } _uploadRequest.Credentials = new NetworkCredential(this.UserName, this.Password); _uploadRequest.Proxy = null; _uploadRequest.KeepAlive = false; _uploadRequest.BeginGetRequestStream(new AsyncCallback(TransFile), file); } } catch (Exception e) { _result = e.Message; } }
private void DeleteFinish(IAsyncResult ar) { _deleteFileFinished = true; FtpWebRequest _deleteRequest = ar.AsyncState as FtpWebRequest; try { FtpWebResponse response = (FtpWebResponse)_deleteRequest.EndGetResponse(ar); _result = response.StatusDescription; response.Close(); } catch (Exception e) { _result = e.Message; } }
// The EndGetResponseCallback method // completes a call to BeginGetResponse. private void EndGetResponseCallback(IAsyncResult ar) { FtpWebResponse response = null; try { response = (FtpWebResponse) request.EndGetResponse(ar); } // Return exceptions to the main application thread. catch (Exception e) { Console.WriteLine ("Error getting response."); asyncException = e; wait.Set(); } Console.WriteLine("Upload status: {0}",response.StatusDescription); // Signal the application thread that this operation is complete. wait.Set(); }
private static MemoryStream DoOldStyleAsync(FtpWebRequest request, MemoryStream requestBody) { if (requestBody != null) { IAsyncResult ar = request.BeginGetRequestStream(null, null); ar.AsyncWaitHandle.WaitOne(); Stream requestStream = request.EndGetRequestStream(ar); requestBody.CopyTo(requestStream); requestStream.Close(); } IAsyncResult ar2 = request.BeginGetResponse(null, null); ar2.AsyncWaitHandle.WaitOne(); FtpWebResponse response = (FtpWebResponse)request.EndGetResponse(ar2); MemoryStream responseBody = new MemoryStream(); response.GetResponseStream().CopyTo(responseBody); response.Close(); return(responseBody); }
/// <summary> /// Returns an IWebResponse. /// </summary> /// <param name="asyncResult">An System.IAsyncResult that references a pending request for a response.</param> /// <returns>An IWebResponse that contains a response to the Internet request.</returns> public override IWebResponse EndGetResponse(IAsyncResult asyncResult) { return(new FtpWebResponseAdapter((FtpWebResponse)_ftpWebRequest.EndGetResponse(asyncResult))); }
private static MemoryStream DoOldStyleAsync(FtpWebRequest request, MemoryStream requestBody) { if (requestBody != null) { IAsyncResult ar = request.BeginGetRequestStream(null, null); ar.AsyncWaitHandle.WaitOne(); Stream requestStream = request.EndGetRequestStream(ar); requestBody.CopyTo(requestStream); requestStream.Close(); } IAsyncResult ar2 = request.BeginGetResponse(null, null); ar2.AsyncWaitHandle.WaitOne(); FtpWebResponse response = (FtpWebResponse)request.EndGetResponse(ar2); MemoryStream responseBody = new MemoryStream(); response.GetResponseStream().CopyTo(responseBody); response.Close(); return responseBody; }