у меня есть следующий код, но проблема в том, что, когда я exucte ее без использования делегата нить она идет гладко, но когда я использую делегата, то он дает мне ERRO:C# делегат класса Возвращаемое значение пусто
NullReferenceException Был Unhandled, Ссылка на объект не указывает на экземпляр объекта/
код:
public static string makezip_thread(string [] files,bool IsOriginal)
{
string paths="";
Thread starter = new Thread (delegate(){ paths = Makezipfile(files,IsOriginal);});
starter.IsBackground = true;
starter.Start();
return paths;
}
мой почтовый Making Class :
public static string Makezipfile(string[] files, bool IsOriginal)
{
string[] filenames = new string[files.Length];
if (IsOriginal)
for (int i = 0; i < files.Length; i++)
filenames[i] = HttpContext.Current.Request.PhysicalApplicationPath + files[i].Remove(0,10).ToString();
else
for (int i = 0; i < files.Length; i++)
filenames[i] = HttpContext.Current.Request.PhysicalApplicationPath + files[i].Replace(HttpContext.Current.Request.UrlReferrer.ToString(), "");
string DirectoryName = filenames[0].Remove(filenames[0].LastIndexOf('/'));
DirectoryName = DirectoryName.Substring(DirectoryName.LastIndexOf('/') + 1).Replace("\\","");
try
{
string newFile = HttpContext.Current.Request.PhysicalApplicationPath + "images\\Thumbnails\\zipFiles\\" + DirectoryName + ".zip";
if(File.Exists(newFile))
File.Delete(newFile);
using (ZipFile zip = new ZipFile())
{
foreach (string file in filenames)
{
string newfileName = file.Replace("\\'", "'");
zip.CompressionLevel=0;
zip.AddFile(newfileName, "");
}
zip.Save(newFile);
}
return a;
}
Там не достаточно информации здесь, чтобы ответить на вопрос правильно. Вы говорите, что если вы просто выполняете Makezipfile (...) без потока, вы получаете ожидаемый результат? –
@ Chris, Shain: да точно, если я вызову метод без использования потока, это будет нормально, но когда я использую его в потоке, он повторяет вышеупомянутую ошибку упоминания :( – safi