Ошибка cannot access a disposed object - C#
Формулировка задачи:
Доброго времени суток!!!
Есть функция, получающая список дирректорий на FTP сервере (getDirList()). При первом её вызове всё нормально, а при втором, когда меняется ftp хост она выдаёт ошибку cannot access a disposed object. Уже и закрывал поток, что только не пробавал, но проблема остаётся...
здесь происходят вызовы функции
вот сама функция
В чём может быть проблема?
//имя папки с текущей датой
String dateFolder = date.Year + "-" + month + "-" + date.Day;
String[] dirList = ftp.getDirList().ToArray();
if (!notExists(dirList, dateFolder))
ftp.createDir(dateFolder);
else
ftp.host = ftp.host + dateFolder + "/";
dirList = ftp.getDirList().ToArray();
if (notExists(dirList, orderNumber))
{
//если существует, ищем другое имя
String buff = orderNumber;
int it = 1;
//подбираем уникальное имя папки
while (notExists(dirList, buff))
{
buff = orderNumber + " (" + it + ")";
it++;
}
//создаём директорию
ftp.createDir(buff);
}
else
ftp.createDir(orderNumber); public List<string> getDirList()
{
List<string> lst = new List<string>();
//try
//{
FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create(new Uri(host));
requestDir.Method = WebRequestMethods.Ftp.ListDirectory;
requestDir.Credentials = new NetworkCredential(user, password);
requestDir.UsePassive = true;
requestDir.UseBinary = true;
requestDir.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)requestDir.GetResponse();
Stream stream = response.GetResponseStream();
using (StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default))
{
if (stream != null)
do
lst.Add(reader.ReadLine());
while (!reader.EndOfStream);
reader.Close();
}
stream.Close();
response.Close();
/*}
catch(Exception e)
{
procErrorEvent(this, new EventFtpErrorArgs(e.Message));
}*/
return lst;
}Решение задачи: «Ошибка cannot access a disposed object»
textual
Листинг программы
public List<string> getDirList()
{
List<string> lst = new List<string>();
try
{
FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create(new Uri(host));
requestDir.Method = WebRequestMethods.Ftp.ListDirectory;
requestDir.Credentials = new NetworkCredential(user, password);
requestDir.UsePassive = true;
requestDir.UseBinary = true;
requestDir.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)requestDir.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.Default))
{
if (stream != null)
{
String str = "";
do
{
str = reader.ReadLine();
if (str != null)
lst.Add(str);
}
while (str != null);
}
}
stream.Close();
}
response.Close();
}
catch(Exception e)
{
procErrorEvent(this, new EventFtpErrorArgs(e.Message));
}
return lst;
}