c#后台工人类

我想把这个方法放到后台工作者类中,我正在尝试但是卡住了,任何人都可以帮助我如何将这个方法运行到后台工作者类中:
我将此方法调用到我的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; } 

看来你的问题是从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应用程序中我不知道,但这至少是如何做到的;)