我有一个使用 BackgroundWorker 实现的应用程序,它使用 LumiSoft 库定期连接到 ftp(用于下载和上传)。它工作得很好,但过了一段时间(比如说 2 - 3 小时)线程(后台工作人员)在 Connect 方法下阻塞(女巫不会抛出任何异常)。这是失败的代码部分:try {
ftp = new FTP_Client();
logMessages = "";
logMessages += Utils.FormatLogMessage("Ftp wants to connect " +
seData.host, Utils.MessageType.Info);
worker.ReportProgress(0);
ftp.Connect(seData.host, 21);
ftp.Authenticate(seData.userName, seData.password);
logMessages = "";
logMessages += Utils.FormatLogMessage("Ftp connected to " +
seData.host, Utils.MessageType.Info);
error = false;
worker.ReportProgress(0);
System.Threading.Thread.Sleep(200);
logMessages = "";
}
catch (Exception ex)
{
logMessages = "";
if (ftp.IsConnected)
{
ftp.Disconnect();
}
ftp.Dispose();
logMessages += Utils.FormatLogMessage(ex.Message, Utils.MessageType.Error);
logMessages += Utils.FormatLogMessage("Trying to reconnect in " +
seData.recTime.ToString() + " seconds", Utils.MessageType.Info);
worker.ReportProgress(0);
Beep(500, 500);
System.Threading.Thread.Sleep(seData.recTime * 1000);
error = true;
}
假设每 2 分钟执行一次。所以它会阻止“ftp.Connect(seData.host, 21);” 这只会在一段时间后发生。知道为什么会这样吗?如果您有任何建议,请告诉我。谢谢。达纳。