我阅读了 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# 新手,所以请耐心等待。我知道我没有启用计时器,并且此代码中可能缺少其他关键部分,但我只是发布它来澄清我的问题。
因此,根据我们的评论线程,我看到类似的事情正在发生:
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可以是它自己的方法。
| 归档时间: |
|
| 查看次数: |
43679 次 |
| 最近记录: |