C# 从已用时间事件获取返回值
本文关键字:事件 获取 返回值 时间 | 更新日期: 2023-09-27 18:34:18
嗨,我
有一个与旧线程类似的问题,我仍然无法解决(通过事件处理程序将返回值传递回( 。我最终尝试实现一个计时器,该计时器将以偶数间隔计算速度,因此我需要经过的时间事件返回某种值。我尝试使用全局变量,但事件似乎没有改变变量。有什么建议吗?提前感谢!
namespace Timer_Label
{
public static class GlobalVariables
{
public static int _stringHolder;
public static int StringHolder
{
get { return _stringHolder; }
set { _stringHolder = value; }
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent);
myTimer.Interval = 500;
myTimer.Start();
MessageBox.Show(Convert.ToString(GlobalVariables.StringHolder));
}
public static void DisplayTimeEvent(object sender, ElapsedEventArgs e)
{
GlobalVariables.StringHolder = "1";
}
当
代码到达 MessageBox.Show 语句时,计时器极不可能已经过期。
尝试在 myTimer.Start(( 和 MessageBox.Show(( 之间放置一个 Thread.Sleep(1000( 调用。这应该为计时器提供时间来处理和执行 DisplayTimeEvent 处理程序。
最终,您需要考虑 System.Timer.Timer 类在后台线程中执行其回调的事实,因此您需要同步在 DisplayTimeEvent 中所做的更改。