用例名称:启动飞机模拟
范围:飞机飞行模拟器
级别:用户目标
主要演员:用户
这是我的问题。在.NET中,哪个Timer最适合飞机类,它应该是Windows窗体计时器,基于服务器的计时器还是线程计时器?我试图让飞机以由计时器间隔确定的速率上升/下降。希望这是有道理的。
我需要对此进行一些澄清,请帮忙!这是我的班级
使用System; 使用System.Timers;
命名空间ConsoleApplication1
{
class Airplane
{
public Airplane()
{
_currentAltitude = 0;
Timer _timer = new Timer();
_timer.Start();
Console.WriteLine("airplane started");
Console.ReadKey();
}
public const int MAXALLOWABLEHEIGHT = 30000;
public const int MINALLOWABLEHEIGHT = 15000;
private int _currentAltitude;
public int CurrentAltitude
{
get
{
return _currentAltitude;
}
set
{
_currentAltitude = value;
}
}
private bool airplaneIsDead = false;
// Define the delegate types
public delegate void GoneTooHigh(string msg);
public delegate void GoneTooLow(string msg);
// Define member variables of the above delegate types
private GoneTooHigh MaxHeightViolationList;
private GoneTooLow MinHeightVioloationList;
// Add members to the invocation lists using helper methods
public void OnGoneTooHigh(GoneTooHigh clientMethod)
{
MaxHeightViolationList = clientMethod;
}
public void OnGoneTooLow(GoneTooLow clientMethod)
{
MinHeightVioloationList = clientMethod;
}
void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (_currentAltitude < MAXALLOWABLEHEIGHT)
{
_currentAltitude++;
}
else
{
_currentAltitude--;
}
}
}
}
答案 0 :(得分:0)
您应该使用System.Timers.Timer,原因如下:
http://msdn.microsoft.com/en-us/magazine/cc164015.aspx
基本上,你受Winforms Timer控件的其他Winforms代码的支配,它不会给你一定的相等间隔。
答案 1 :(得分:0)
由于这是一个控制台应用程序,因此Windows窗格计时器无法正常工作。
我会选择线程计时器。
请注意,控制台应用程序中的多线程计时可能有点......愚蠢。你的主线程将只是坐在一个无限循环中,几乎没有任何东西,直到另一个线程完成。