在 ASP.net 中,当我们使用 Thread 、 Async 、计时器时,我们无法更新 ui 值或调用其中的脚本管理器

问题描述 投票:0回答:1

我正在使用代码来侦听asp.net应用程序中的tcp侦听器,而侦听tcp我们在asp.net中使用线程或任务来侦听需要更改ui值的特定值。 我尝试了 scriptmanager 注册脚本和 ui 元素更新都不起作用。对于 WPF,我们使用调度程序调用。在 asp.net 中我们也需要类似的方法。当我们在asp.net中监听tcp监听器中的值时,我需要更新ui

asp.net multithreading user-interface tcp timer
1个回答
0
投票

您不共享任何代码,或者如何连接部分网络连接和监听代码。

但是,请记住,服务器通常不会与用户浏览器通信或发送信息。网页的任何更新都需要所谓的页面生命周期,或“往返”。

因此,要更新网页上的简单文本框,您可以点击“提交”,然后页面会传输到服务器。用户看到的是浏览器等待“旋转”。在服务器端,服务器上的网页“DOM”可以通过服务器代码进行修改。

在此类更改期间,用户不会也不会看到服务器上的网页发生任何更改。一旦服务器端代码完成运行并对浏览器进行更改,网页就会返回客户端。

此往返概念很重要,因为您的服务器端代码在此往返期间永远不会与最终用户交互。

服务器代码因此可以对服务器上的浏览器副本进行 1 次更改或 20 次更改。最终用户不会看到任何更改。

只有在所有更改完成后,整个网页才会返回客户端,然后进行渲染和显示。

上述内容意味着很多事情,但最重要的是您因此需要运行/拥有/使用一些客户端 JavaScript 来池化服务器。为了进一步推进这个概念,您可以设置所谓的 Web 套接字连接到浏览器。

创建并采用与浏览器的实时 Web 套接字连接现在将允许您的服务器端代码将内容“推送”到浏览器,并且您不必依赖网页往返。

虽然许多人推出自己的软件来管理网络套接字?设置和维护网络套接字可能需要一些工作,因此不要重新发明轮子。那么对于网络浏览器的实时更新(从服务器端代码),例如某些聊天系统,每个用户都可以看到其他人实时键入?

然后采用一个预制库来为您管理网络套接字。

因此,常见的方法是使用 .net 的 SignalR 库。

您可以使用此库学习并采用与浏览器的实时连接:

https://learn.microsoft.com/en-us/aspnet/signalr/overview/getting-started/

© www.soinside.com 2019 - 2024. All rights reserved.