好吧,id 喜欢做的是加载一个显示 90% 内容的页面,并异步加载最后 10%。
当我渲染页面时,我以编程方式创建一个更新面板,并将其传递给线程。当该线程完成后,它会更新主线程上的 updatepanel。
public void test(object parameter)
{
Thread.Sleep(2000);
var updpanel = (UpdatePanel)parameter;
updpanel.ContentTemplateContainer.Controls.Add(new LiteralControl("HI"));
updpanel.Update();
}
protected void Page_Load(object sender, EventArgs e)
{
var th = new Thread(new ParameterizedThreadStart(test));
var updpanel = new UpdatePanel() { UpdateMode = UpdatePanelUpdateMode.Conditional };
ContentPlaceHolder1.Controls.Add(updpanel);
th.Start(updpanel);
}
如果失败,在单线程方法中,我是否只是继续轮询页面以查看它是否已完成?
最佳答案
需要记住的一件事是,尽管 ASP.Net 开发看起来与 Windows 开发密切相关,但有一个很大的区别:大多数时候,处理请求的代码只需要一小部分时间即可执行。第二步完成...在这个例子中,一旦主线程完成,生成的页面就已经发送给请求者,让辅助线程在服务器后台运行,处理已经发送出去的页面.
您可能需要做的是生成页面的 90%,然后将其发送出去。在您的页面上,您需要使用 ajax 在页面加载(对于客户端)时从服务器请求另外 10%...您可能需要使用像 jquery 这样的库来执行 javascript,并在服务器端设置一个Web服务来处理请求。
关于c# - 异步添加内容(线程+ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412648/