系统使用的简单示例。计时器。C# 中的定时器

Jac*_*des -2 c# timer

我阅读了 MSDN 网站和所有内容,但我找不到关于如何引发一个定时事件的简单解释,该事件接受可以是 astring或 的参数double。提供的示例使用ElapsedEventArgs但没有显示出实现我自己对引发事件的论点的好方法。

我的代码(我没有测试过,所以可能是错误的):

private double Pressure_Effect(double p, int t){
        time=(double) t;
        v=(((p/(rho*y))-g)*time)/(1.0+(mu*time/(rho*y*x)));
        return v;

    }
    private void Time_Handle(){
        System.Timers.Timer startTimer=new System.Timers.Timer(70);
        startTimer.Elapsed += new ElapsedEventHandler(Activate_Pressure);

    }
    private void Activate_Pressure(object source, ElapsedEventArgs e){
        pressure=2.5;
        double v=Pressure_Effect(pressure, 70);

    }
Run Code Online (Sandbox Code Playgroud)

我想做的是Activate_Pressure多余的,因为如果我可以直接将事件传递给我Pressure_Effect,但我不知道如何传递。我是 C# 新手,所以请耐心等待。我知道我没有启用计时器,并且此代码中可能缺少其他关键部分,但我只是发布它来澄清我的问题。

Cᴏʀ*_*ᴏʀʏ 5

因此,根据我们的评论线程,我看到类似的事情正在发生:

class PressureModel
{
    private double interval = 70;
    private double pressure = 2.5;
    private DateTime startTime;
    private Timer timer;

    // assuming rho, y, g, x, and mu are defined somewhere in here?

    public PressureModel()
    {
        timer = new Timer(interval);
        timer.Elapsed += (sender, args) => PressureEvent(sender, args);
    }

    public void TimerStart() 
    {
        startTime = DateTime.Now;
        timer.Start();
    }

    public void TimerStop()
    {
        timer.Stop();
    }

    private void PressureEvent(object sender, ElapsedEventArgs args)
    {
        // calculate total elapsed time in ms
        double time = (double)((args.SignalTime - startTime).TotalMilliseconds);
        // calculate v
        double v = CalculateV(time);
        //
        ... do you other work here ...
    }

    private double CalculateV(double time)
    {
        double p = this.pressure;
        // not sure where the other variables come from...
        return (((p/(rho*y))-g)*time)/(1.0+(mu*time/(rho*y*x)));
    }
}
Run Code Online (Sandbox Code Playgroud)

我觉得分开PressureEvent多一点也没什么不好。我仍然会保留一个v在给定某些参数的情况下自行计算的函数,然后一旦你有了它自己的方法,你需要做的任何事情也v可以是它自己的方法。