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";                                 
    }

C# 从已用时间事件获取返回值

代码到达 MessageBox.Show 语句时,计时器极不可能已经过期。

尝试在 myTimer.Start(( 和 MessageBox.Show(( 之间放置一个 Thread.Sleep(1000( 调用。这应该为计时器提供时间来处理和执行 DisplayTimeEvent 处理程序。

最终,您需要考虑 System.Timer.Timer 类在后台线程中执行其回调的事实,因此您需要同步在 DisplayTimeEvent 中所做的更改。