我想在我的WPF应用程序上每0.2秒显示一个随机图像。
我已尝试使用各种.NET计时器来实现这一点,并且响应并不精彩 - 它可以正常工作,但它往往会出现断断续续的情况,或者一张图像会明显长于其他图像。
这里最好的方法是什么/我错过了什么?我假设它是System.Timer或Random()的问题。是否有更好的计时器使用>
我在创建PlayerViewModels时将所有图像预加载为BitmapSource属性。
我已经发布了以下代码:
private const int TIMER_INTERVAL = 200;
private Timer _timer;
private static Random _random = new Random();
public List<PlayerViewModel> Players { get; set; }
public PlayerViewModel CurrentPlayer { get; set; }
public MainViewModel()
{
Players = new PlayerInfoParser().Players.Select(x=> new PlayerViewModel(x)).ToList();
CurrentPlayer = GetRandomPlayer();
_timer = new Timer(UpdatePlayer, null, 0, TIMER_INTERVAL);
}
private void UpdatePlayer(object state)
{
CurrentPlayer = GetRandomPlayer();
OnPropertyChanged("CurrentPlayer"); // Update View
}
private PlayerViewModel GetRandomPlayer()
{
var randomNumber = _random.Next(Players.Count);
return (Players[randomNumber]);
}