我想将此方法放入后台工作者类,我正在尝试但卡住了,
任何人都可以帮助我如何将此方法运行到后台工作者类中:
我将此方法调用到我的asp.net页面,其中文件在服务器上压缩,然后返回到客户端。但压缩文件可能需要更长时间,用户将看到一个忙碌的屏幕,所以为了避免我想使用后台工作者类:
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public string Zip(string f, bool original)
{
string zip = "";
try
{
files = HttpContext.Current.Server.UrlDecode(files);
string[] fileCollection = files.Split('*');
zipFile = class1.zipfile(fileCollection, IsOriginal);
int fileLength = files.Length;
}
catch (Exception ex)
{
Console.WriteLine("Exception during processing {0}", ex);
}
return File;
}
答案 0 :(得分:3)
似乎您的问题是从BackgroundWorker返回值。这可以这样做:
在worker的DoWork方法中,将e.Result
设置为您想要返回的内容:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
...
e.Result = File;
}
然后,在RunWorkerCompleted
方法中,您可以在主线程中访问此值:
private void backgroundWorker1_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e)
{
string result = e.Result as string;
}
我假设File
在这里是字符串,但您可以将其强制转换为您所需的对象。
为什么你需要在Web应用程序中使用它我不知道,但这至少是如何做到的;)