0

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();

ありがとうございました。

4

1 に答える 1

1

非同期タスクを実装したいと思うでしょう。

まず、この記事を読んでください: http://aspalliance.com/1778

非同期タスクを使用すると、バックグラウンド スレッドを一時停止および/または再開し、ファイル アップロード リクエストを処理するスレッドを終了させて​​、IIS スレッド プールのスロットを節約できます。

その一時停止と再開機能は、いくつかの同期ロジックによって実現されます。

たとえば、非同期タスク (以前はプロセス) 識別子をどこかに保存し、データベース、ファイル、または利用可能なストレージに格納されているブール値フラグを準備し、アップロード ループの各反復中に、続行する権限があることを確認できます。 .

その権限がない場合は、モニター、ミューテックス、またはその他のスレッド同期アプローチを使用して、アップロード プロセスを続行するための「パルス」を待機するか、強制終了できます。

于 2011-01-31T08:45:28.090 に答える