Здравствуйте, у меня очень простая функция для загрузки файлов с FTP. Выглядит так:
//Download files from FTP, return true of false if succed
public static bool DownloadFileFromFTP( string ip, string RemoteFilePath, string LocalFilePath, string username, string password)
{
try
{
FtpClient client = new FtpClient(ip);
client.Credentials = new NetworkCredential(username, password);
client.Connect();
ProgressBar progressBar;
progressBar = new ProgressBar();
Progress<double> progress = new Progress<double>(x => {
if (x > 0)
{
progressBar.Report((double)x / 100);
}
});
bool succes = client.DownloadFile(LocalFilePath, RemoteFilePath, FtpLocalExists.Overwrite, FluentFTP.FtpVerify.Retry, progress);
if(succes == true)
{
succes = true;
}
else
{
succes = false;
}
client.Disconnect();
progressBar.Dispose();
return succes;
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
return false;
}
}
И этот метод находится в одном классе, и я вызываю его в другом классе, например:
Functions_General.DownloadFileFromFTP("192.168.240.86", "Ultra_Script/path", @"C:\Windows\Temp\Adobe_Reader.exe", "username", "password");
Все работает как положено. Но у самой функции есть прогрессбар внутри нее и ее удаление после завершения загрузки с этим:
progressBar.Dispose();
Но возникает проблема, которая мне нужна, чтобы избавиться от нее в классе, где я вызываю метод. Есть ли вариант, как мне этого добиться?
Мне нужно иметь 3 синхронных индикатора выполнения и утилизировать их после завершения всех трех загрузок.
Спасибо