从另一个线程的IP回调中更新Web应用程序UI.. NET和c#)

本文关键字:UI 应用程序 NET Web 更新 线程 另一个 IP 回调 | 更新日期: 2023-09-27 18:02:32

我正在用ASP编程一个Web应用程序。. NET和c# .

当页面加载时,它必须侦听(IP连接),当它获得消息时,应该使用该值更新标签(从回调中更新UI)。为了简化我的代码,我为主页设置了如下代码:

protected void Page_Load(object sender, EventArgs e)
    {
        Thread listeningThread = new Thread(new ThreadStart(StartListening));
        listeningThread.Start();
    }

这是aspx文件中的标签:

<asp:Label ID="MyLabel" runat="server" EnableViewState="False"></asp:Label>

然后,这是我的回调函数:

private void StartListening()
    {
        Action<string> callbackRead = (string message) =>
        {
            myLabel.text = message;
        };
    }

消息正确到达,如果我在回调中放置一个断点,我可以看到它是如何在里面的。尽管如此,UI没有更新。当然,如果我写myLabel。text = "随便";在Page_Load部分,它工作得很好。

我已经尝试过网格和DataSource + DataBind()(我遵循本教程),但我仍然有同样的问题,如果我在Page_Load中这样做,但不是从回调,它的工作很好。

我在其他问题中读了很多关于这个的问题,但没有一个答案能解决我的问题(大多数是针对WinForms等)

我是这个领域的新手,我知道我可能错过了一些东西。你能帮我一下吗?实现我想要的东西的正确方法是什么?提前感谢!

从另一个线程的IP回调中更新Web应用程序UI.. NET和c#)

设置myLabel。text = message您在服务器端更新标签文本,而您[也]需要更新客户端浏览器中的文本。

典型的方法是:ajax pull(每隔X秒向服务器发送ajax请求以检查更新)或websockets(服务器可以直接向客户端浏览器推送更新)。