c# - 异步添加内容(线程+ajax)

标签 c# ajax multithreading updatepanel

好吧,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/

相关文章:

c# - 查询任务的 Result 属性导致线程池创建一个新线程

c# - 信号量停止我的线程

javascript - ajax jquery 不工作

c# - JsonResults 返回枚举值而不是字符串表示

c# - 将构建版本号应用于程序集时出现 VSTS 问题

c# - 通用线性插值器 : how to cope with DateTime?

javascript - 在文档中放置 JavaScript/Ajax 的最佳位置在哪里?

c++ - 如何避免临界区和 SendMessage 之间的这种死锁?

c# - ElasticSearch:如何在集合中搜索

c# - 如何使用 NSubstitute 获取被调用的参数? (或至少断言他们的属性(property))