Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在使用多线程时更新aspx页面_Asp.net_.net_Multithreading_Webforms_Asp.net Ajax - Fatal编程技术网

Asp.net 如何在使用多线程时更新aspx页面

Asp.net 如何在使用多线程时更新aspx页面,asp.net,.net,multithreading,webforms,asp.net-ajax,Asp.net,.net,Multithreading,Webforms,Asp.net Ajax,我正在使用多线程更新/显示页面内容。页面正在使用多个(和嵌套的)更新面板。现在,我正在使用以下逻辑来更新页面 我有七个线程,每个线程通过查询数据库获取数据,并在页面的特定部分显示它们。我们启动线程并等待2分钟,超过2分钟后,如果一些线程仍在工作,那么我们中断这些线程并在页面上显示填充的数据,这些对线程的调用在页面加载事件中进行 问题是,我们必须在页面加载之前等待特定的时间,然后在该时间限制之后,页面将显示填充的数据。用户需要等待很长时间才能看到该页面,这给用户留下了非常糟糕的印象 如果取消2分钟

我正在使用多线程更新/显示页面内容。页面正在使用多个(和嵌套的)更新面板。现在,我正在使用以下逻辑来更新页面

我有七个线程,每个线程通过查询数据库获取数据,并在页面的特定部分显示它们。我们启动线程并等待2分钟,超过2分钟后,如果一些线程仍在工作,那么我们中断这些线程并在页面上显示填充的数据,这些对线程的调用在页面加载事件中进行

问题是,我们必须在页面加载之前等待特定的时间,然后在该时间限制之后,页面将显示填充的数据。用户需要等待很长时间才能看到该页面,这给用户留下了非常糟糕的印象

如果取消2分钟的限制,则页面渲染速度很快,但不会显示所有数据


我想要的是,当我们调用线程时,我们不需要等待所有线程完成,当一个线程完成时,它应该在页面上显示其数据,当其他线程完成时,它们应该相应地显示其数据。

在测试了许多技术之后,我找到了这个问题的解决方案

要实现这一点,我们不需要使用线程。当我们调用一个页面时,服务器生成该页面的一个对象并执行所有必需的执行,然后呈现该页面,在服务器上销毁其对象并将呈现的页面发送到客户端浏览器。所以在渲染之后,我们无法接收线程的响应。要接收线程的响应,我们必须停止显式呈现页面(这会导致延迟,这是我们不希望的)

因此,我们的解决方案是将JSON Ajax API与Web方法结合使用(如果处理复杂对象,则使用序列化和反序列化)


我们必须加载包含所有控件的页面,页面的onload事件,调用javascript方法,该方法使用JSON API调用Web方法,在收到Web方法的响应后,我们必须使用javascript/JQuery手动更新相应的控件。

您看过通过ajax调用Web方法/服务吗?