0
我有下面的代碼,但問題是,當我exucte它不使用代理線程它去順利,但是當我使用委託那麼它給我的埃羅:C#委託類返回值是空
的NullReferenceException了未處理,對象參考不設置爲一個對象的一個實例/
的代碼是:
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;
}
我的拉鍊製作類:
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(...),你會得到預期的結果嗎? – 2011-02-08 16:48:38
@ Chris,Shain:是的,如果我不使用線程調用該方法,它就可以,但是當我在線程中使用它時,它會重新提供上面提到的錯誤:( – safi 2011-02-08 16:49:59