这样的Timer该如何实现? 我在主窗体里有一个很复杂的数据运算,可以看成一个很大的for循环。我想在数据运算时,每隔1s改变下主窗体上的一个label的背景颜色。请教大家,该如何做呢?我用了timer控件,和System.Timers.Timer。在数据运算时,都不能更新label。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个问题讨论过多次:private void timer1_Elapsed(.....) { this.Invoke(new UpdateUICallBack(UpdateUI)); }private delegate void UpdateUICallBack();private void UpdateUI() { // labelColorChange;} 这有什么难。你定义一个Color类型的数组,装一些你要的颜色进去,每隔一秒去随机产生一个随机整数,用来当做数组下标,在将Color数组中取出的颜色付给Label,但是时间空间要用Thread来控制以免阻塞当前进程,否则会很卡 楼上xx_lzj的代码我没看懂!~~我想,先不直接说代码,而是描述下实现过程。我的理解:你的主程序在执行一个类似于For循环的操作,也就是一个死循环操作,希望每隔一段时间更新程序界面上某个控件(label)的属性。那么,我的理解,你需要使用多线程来完成这个事情。CPU同时只做一个事情,你都让他(主程序所在的线程)执行计算的死循环了,在循环结束前,是不会做别的事情的。使用多线程的法子有很多,楼上的使用UI方面的委托应该是一种方法,但我没用过——希望楼上有空能给我发个完整资料学习下。^_^至于这个多线程怎么做~~我只会相对复杂的操作,就先不说代码了,只说思路。我的思路是:(1)把纯数字计算过程放在一个函数中,开一个线程执行这个函数。(2)主线程,就是主程序窗口有一个timer。(3)循环计算过程中,插入一个暂停N毫秒当前线程的操作。 如 当前线程.Sleep(10)。让你的主线程能有机会执行,执行其timer的事件。 谢谢楼上,我用了backgroundworker来实现了。显示可以更新了。但出现了另外一个问题,在我的放在backgroundwroker里的有个对剪贴板操作,在新线程里面无法操作。这个问题该如何解决呢? 如何实现VS工具栏拖动的效果 C# MVC 使用JQuery DatePicker 出问题,捣鼓好几天了 iis5.1安装问题 我的程序bin目录下由C#自动生成的xml文件,我想把它转换为html文件,如何实现? 本人有一个想法,不知是否可行,求教!! 如何用ClickOnce发布指定的数据文件 装箱拆箱问题 一个文件被StreamReader读取时,是否能够同时被StreamWriter写? WebClient 类怎么获取直接跳转页面的内容 WinForm里面,在dataGrid中如何循环其所有行? 请问,如何在项目中加一个论坛啊!~ C#判断网络连接问题
private void timer1_Elapsed(.....)
{
this.Invoke(new UpdateUICallBack(UpdateUI));
}
private delegate void UpdateUICallBack();
private void UpdateUI()
{
// labelColorChange;
}
我的思路是:
(1)把纯数字计算过程放在一个函数中,开一个线程执行这个函数。
(2)主线程,就是主程序窗口有一个timer。
(3)循环计算过程中,插入一个暂停N毫秒当前线程的操作。 如 当前线程.Sleep(10)。让你的主线程能有机会执行,执行其timer的事件。
但出现了另外一个问题,在我的放在backgroundwroker里的有个对剪贴板操作,在新线程里面无法操作。
这个问题该如何解决呢?