如何暂停和恢复WebRequestMethods.Ftp.UploadFile进程?

时间:2011-01-31 07:36:26

标签: c# file-upload ftpwebrequest suspend

如何暂停和恢复FTP上传过程? 我的上传过程是以下代码。如何实现暂停和恢复过程?

FileInfo fileInf = new FileInfo(filename);
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + host + defaultDir + "/" + fileInf.Name));

reqFTP.Credentials = new NetworkCredential(user, pass);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = fileInf.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream fs = fileInf.OpenRead();
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
int maxLen = contentLen;
while (contentLen != 0)
{
                // Write Content from the file stream to the FTP Upload Stream
                strm.Write(buff, 0, contentLen);
                contentLen = fs.Read(buff, 0, buffLength);
}

strm.Close();
fs.Close();

谢谢。

1 个答案:

答案 0 :(得分:1)

您希望实现异步任务。

首先,阅读这篇文章: http://aspalliance.com/1778

通过使用异步任务,您可以暂停和/或恢复 后台线程,让线程处理文件上传 请求结束,在IIS线程池中保存插槽。

暂停和恢复功能将通过某些同步逻辑实现。

例如,您可以在某处保存异步任务 - 以前的进程 - 标识符, 并准备一些存储在数据库,文件或任何存储中的布尔标志 可供您使用,并在上传循环的每次迭代期间,检查 它有权继续。

如果没有该权限,您可以使用监视器,互斥锁或 任何其他线程同步方法等待“脉冲” 继续上传过程,或将其杀死。