看起来您只需要为计算提供一些基本值:
void CalculateT0(DateTime calculationBase) {...}
void CalculateT1(DateTime calculationBase) {...}
void T0_ButtonClick(...)
{
CalculateT0(DateTime.Now);
}
void T1_ButtonClick(...)
{
CalculateT1(DateTime.Now);
}
void T0Plus1_ButtonClick(...)
{
var calculationBase = DateTime.Now;
CalculateT0(calculationBase);
CalculateT1(calculationBase);
}
更新。
关于同时触发两个事件。
首先,您的问题与触发事件无关。你现在有这样的代码:
void T0Plus1_ButtonClick(...)
{
T0_ButtonClick(...);
T1_ButtonClick(...);
}
这不是一个Button0.Click
或Button1.Click
事件触发。此代码仅调用两个方法(即使它们在某处用作事件处理程序)。您不能在声明该事件的对象之外触发事件。
第二,由于操作系统的性质,您不能同时调用任何两个方法,它不是实时操作系统。当然,这是不可能使用单线程(如您的示例中),因为线程顺序执行其指令,但使用多个线程这是不可能的 - 不能保证两个线程将同时启动(并且没有这样的 API)。