如何暂停和恢复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();
谢谢。
答案 0 :(得分:1)
您希望实现异步任务。
首先,阅读这篇文章: http://aspalliance.com/1778
通过使用异步任务,您可以暂停和/或恢复 后台线程,让线程处理文件上传 请求结束,在IIS线程池中保存插槽。
暂停和恢复功能将通过某些同步逻辑实现。
例如,您可以在某处保存异步任务 - 以前的进程 - 标识符, 并准备一些存储在数据库,文件或任何存储中的布尔标志 可供您使用,并在上传循环的每次迭代期间,检查 它有权继续。
如果没有该权限,您可以使用监视器,互斥锁或 任何其他线程同步方法等待“脉冲” 继续上传过程,或将其杀死。