怎么完成让3个picturebox控件里的图片每隔一定时间 相互交换的功能啊,要用thread写。大神们,救救我这菜鸟
怎么完成让3个picturebox控件里的图片每隔一定时间 相互交换的功能啊,要用thread写。大神们,救救我这菜鸟
------解决方案--------------------只要交换,用毛Thread.
一个Timer就可以。
------解决方案--------------------google thread.timer 用法。
------解决方案--------------------一个Timer就可以。
------解决方案--------------------一个Timer就可以。
------解决方案--------------------
你们老大.....,虽然我不懂,但是所有的Timer运行时应该本身就是在一个线程中的.
每隔一定时间表明是定时的,不用Timer难道循环读计时器间隔啊...
------解决方案--------------------多定义几个线程,线程调用时候挂起其他线程,不知道可行不。定时可以通过sleep来实现。
------解决方案--------------------
timer和thread不矛盾。
要不怎么有system.threading.timer
或许你用的是system.windows.forms.timer,注意用前者。
------解决方案--------------------.net类库提供了三种计时器,详见MSDN的说明(http://msdn.microsoft.com/zh-cn/library/tb9yt5e6(v=vs.80).aspx)。对于你的应用场景,我认为选择Windows计时器是最合适,你们老大一定要用线程计时器,他不是在考你就是在显摆。
线程计时器与Windows计时器除了在用法上不同以外,最关键的就是跨线程操作界面上的控件。从.net 2.0开始,在默认情况下不允许直接跨线程操作控件,当有这种需要时,可通过Control.InvokeRequired属性以及Control.Invoke或BeginInvoke方法进行安全的跨线程操作控件。
下面一段示例,假定已经引用了System.Threading命名空间。
// 交替图片
private void SwapPictures()
{
Image img = pictureBox1.Image;
pictureBox1.Image = pictureBox2.Image;
pictureBox2.Image = pictureBox3.Image;
pictureBox3.Image = LoadNextImage();
if (img != null) img.Dispose();
}
// 启动一个延时为5秒的单次定时器。
private void InitTimer()
{
new Timer((state) =>
{
this.Invoke(new Action(SwapPictures));
}, null, 5000, Timeout.Infinite);
}