在Asp.net中的BackgroundWorker在导航到其他页面时仍然可以工作
本文关键字:工作 其他 net Asp 中的 BackgroundWorker 导航 | 更新日期: 2023-09-27 17:50:38
我使用Backgroundworker对用户上传的文件进行数据处理,所以很耗时。与此同时,用户想要导航到另一个页面去做其他事情。
所以我的问题是,是否有可能BackgroundWorker仍然继续处理上传的数据,而当前页面导航到另一个页面??
如果是,如何处理?提供的示例代码供参考,不胜感激!
BackgroundWorker将被销毁,它的工作将永远不会完成。没有办法绕过这个,好吧,不是没有办法绕过这个,但是如果你使用"绕过这个的方法",任何看到你的代码的人都会避开你(它涉及在会话中存储元数据,并在页面加载时对其进行反序列化以继续处理)。
你唯一真正的选择是把你的应用程序分成多个部分。一个ASP。. NET页面允许上传并将文件放在目录中。然后让Windows服务或其他进程执行所需的转换。如果你有Windows服务报告进度到SQL数据库,你可以有一个"状态"页面,用户可以检查他们上传的文件的状态。
如果你必须在一个网页中完成所有这些,那么你必须做像Facebook这样的应用程序所做的:直到所有事情都完成,你不能离开这个页面。
我知道这不是你想要的,但这是在网络上开发的现实。
您可以将数据处理代码放在另一个页面中,并从处理上传的页面异步调用它。
Pesodo代码:
Page_Load()
{
UplaoadFileAndSaveSomeWher();
Call Asynchronous("ProccessorPage.aspx");
Response.Redirect("Go To Other Place");
...
...
...
}
异步调用一个网页,你可以这样使用:
string url = "http://www.google.com";
WebClient client = new WebClient();
client.DownloadDataAsync(new Uri(url));