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