gpt4 book ai didi

c# - System.Timers.Timer 不工作编辑 [在 asp.net web 表单中]

转载 作者:行者123 更新时间:2023-11-30 15:26:04 26 4
gpt4 key购买 nike

我正在用这段代码尝试 Timer 类:-

protected void Page_Load(object sender, EventArgs e)
{
System.Timers.Timer tm = new System.Timers.Timer();
tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed);
tm.Interval = 1000;
tm.Start();
}

void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
int lbl = Convert.ToInt32(Label1.Text);
Label1.Text = (lbl+1).ToString();
}

最初,Label1.Text 为“1”。

但是当我运行应用程序时,标签的文本显示 1 并且没有增加。

最佳答案

正如在其他答案中已经提到的,System.Timers.Timer 是在非 GUI 线程上触发的。这将不允许您访问 GUI 元素并会引发跨线程异常。您可以使用 MethodInvoker 访问 tm_Elapsed 事件中的 GUI 元素。由于您在 Forms 中拥有 Timer 并且想要访问 GUI 元素,因此其他 Timer 类最适合您,即 System.Windows.Forms.Timer .

Implements a timer that raises an event at user-defined intervals. This timer is optimized for use in Windows Forms applications and must be used in a window.

protected void Page_Load(object sender, EventArgs e)
{
System.Windows.Forms.Timer tm = new System.Windows.Forms.Timer();
tm.Tick += tm_Tick;
tm.Interval = 1000;
tm.Start();
}

void tm_Tick(object sender, EventArgs e)
{
int lbl = Convert.ToInt32(label1.Text);
label1.Text = (lbl + 1).ToString();
}

编辑 根据 OP 的评论,他是在网页中执行此操作,而不是像加载事件名称所暗示的那样赢得表单。

如果你不需要服务器的任何东西,你可以使用javascript。如果你想更新 html 控件并需要从服务器进行,​​那么你可以使用 asp:Timer

HTML (.aspx)

  <form id="form1" runat="server">             
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer runat="server" id="UpdateTimer" interval="5000" ontick="UpdateTimer_Tick" />
<asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label id="Label1" runat="server" Text="1" />
</ContentTemplate>
</asp:UpdatePanel>
</form>

代码隐藏

protected void UpdateTimer_Tick(object sender, EventArgs e)
{
Label1.Text = int.Parse(Label1.Text) + 1;
}

关于c# - System.Timers.Timer 不工作编辑 [在 asp.net web 表单中],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30093975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com