在Asp.net中的BackgroundWorker在导航到其他页面时仍然可以工作

本文关键字:工作 其他 net Asp 中的 BackgroundWorker 导航 | 更新日期: 2023-09-27 17:50:38

我使用Backgroundworker对用户上传的文件进行数据处理,所以很耗时。与此同时,用户想要导航到另一个页面去做其他事情。

所以我的问题是,是否有可能BackgroundWorker仍然继续处理上传的数据,而当前页面导航到另一个页面??

如果是,如何处理?提供的示例代码供参考,不胜感激!

在Asp.net中的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));