У меня есть приложение, реализованное с BackgroundWorker, которое периодически подключается к ftp (для загрузки и выгрузки) с использованием библиотеки LumiSoft. Он работает просто отлично, но через некоторое время (скажем, через 2-3 часа) поток (backgroundworker) блокируется методом Connect (ведьма не выдает никаких исключений).
Вот часть кода, которая терпит неудачу:
пытаться
{
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);» и это происходит только через некоторое время. Есть идеи, почему это происходит? Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения.
Благодарю.
Дана.