C#标签不会在计时器上更新

时间:2018-08-07 23:55:17

标签: c# label

我的网页上有一个向我传递消息的功能。该函数将标签更改为消息,但是3秒钟后,我希望标签隐藏或已分配“”值。在控制台中,文本值更改,但在网页中 它保持不变。

private void notify(string msg)
{
    notification.Text = msg;

    System.Threading.Timer timer = null;
    timer = new System.Threading.Timer((obj) =>
    {
        bar();
        timer.Dispose();
    },
    null, 3000, System.Threading.Timeout.Infinite);

}

private void bar()
{
    notification.Text="";
    System.Diagnostics.Debug.WriteLine(notification.Text); //Output ""
}

1 个答案:

答案 0 :(得分:0)

那呢, 您将必须使用javascript在客户端上使用 setInterval(func,3000)。在这种情况下,当调用Notify时,客户端将在3000秒后隐藏到Label。请使用以下代码

设计文件(.aspx)

        <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script>
            function Hide()
            {
                document.getElementById("notification").hidden = true;
            }
            setInterval(Hide, 3000);
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="notification" runat="server" Text="Label"></asp:Label>
        </div>
        </form>
    </body>
    </html>

代码文件(.cs),当它在服务器端调用notify方法时。我正在调用Page_Load,这将是您自己的选择。

protected void Page_Load(object sender, EventArgs e)
{
    notify("ok");
}
private void notify(string msg)
{
    notification.Text = msg;
}