初めてのポスター、長年の読者。私は神経質になっている本当に厄介な問題を抱えています。プログラムをセットアップしたので、FTP サーバーで新しいファイルをリッスンし、新しいファイルがあればダウンロードします。そこから、ファイル内の情報の一部などに取り組みます。私の問題は、シーケンスを 2 回目に実行したときに発生します。つまり、最初にダウンロードしたファイルではすべて問題ありませんが、新しいファイルが検出されてプログラムがダウンロードを試みるとすぐに、プログラムがハングします。
private static void DownloadFile(string s)
{
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://blabla.com/"+s);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential("xxx" ,"zzz");
using (FtpWebResponse partResponse = (FtpWebResponse)request.GetResponse())
{
Stream partReader = partResponse.GetResponseStream();
byte[] buffer = new byte[1024];
FileInfo fi = new FileInfo(path);
FileStream memStream = fi.Create();
while (true)
{
int bytesRead = partReader.Read(buffer, 0, buffer.Length - 1);
if (bytesRead == 0)
break;
memStream.Write(buffer, 0, bytesRead);
}
partResponse.Close();
memStream.Close();
}
Console.WriteLine(DateTime.Now + " file downloaded");
MoveFileToInProgress(s);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
ハングする行は次のとおりです。 using (FtpWebResponse partResponse = (FtpWebResponse)request.GetResponse())
ここで私のメソッドが静的である理由は、テストするために別のプロジェクトで実行しているだけだからです..ここでの私の質問は、2番目のファイルでしか死なないのはなぜですか? 私は何時間も盲目的に自分自身を見つめてきました!