我正在用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等)
我是这个领域的新手,我知道我可能错过了一些东西。你能帮我一下吗?实现我想要的东西的正确方法是什么?提前感谢!
设置myLabel。text = message您在服务器端更新标签文本,而您[也]需要更新客户端浏览器中的文本。
典型的方法是:ajax pull(每隔X秒向服务器发送ajax请求以检查更新)或websockets(服务器可以直接向客户端浏览器推送更新)。