为什么程序中加了System.Threading.Timer后运行不长时间,整个程序停止了。 System.Threading.Timer是线程你要更新UI,需要使用委托 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 或者你这种简单应用,不处理复杂或耗时逻辑,直接用Forms.Timer(或从工具箱里拖一个出来)就好,那个是委托给UI执行的,可以直接在回调函数里给文本框赋值 TimerCallback,不在创建计时器的线程上执行,而是在系统提供的 ThreadPool 线程上执行。 所以TimerCallback访问textBox1控件,是跨线程访问,是不允许的! 跨线程访问UI控件导致,使用 Control.Invoke 那么,用 Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond.ToString() + "timer in:");应该可以正常运行了。我试试 可以运行了。不过我发现,在 void Time_Elapsed(object sender)中设置断点,程序只有第一次运行到断点时停止下来,然后就不会在断点处停止了。 void Time_Elapsed(object sender) { string n; n = num.ToString();//此处设置了断点,不过程序没有停止下来。 Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond.ToString() + n); //textBox1.Text = "n";// num++; timer.Change(Timeout.Infinite, 1000); } timer.Change(Timeout.Infinite, 1000);之后重新执行一下timer.start试试 sql连接出错,ADO.NET中 c#调用c++的DLL函数问题 w3wp 占用cpu100% 如何能很快的查找程序问题 怎么动态的改变ImageList的图标??? 关于继承的小概念 问一个关于VS2008很弱的问题 string.Format方法时字符串本身带有{0}串的问题 请问怎么把前台得到的字符串传到后台啊 怎么将Fi[]装到DataSet里,我要在datalist中绑定--急 从Service中调用ServiceController去停另外一个Service遇到了问题 Socket TCP 接收数据少了 C#缓存。
所以TimerCallback访问textBox1控件,是跨线程访问,是不允许的!
Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond.ToString() + "timer in:");
应该可以正常运行了。我试试
不过我发现,在 void Time_Elapsed(object sender)中设置断点,程序只有第一次运行到断点时停止下来,然后就不会在断点处停止了。
void Time_Elapsed(object sender)
{
string n;
n = num.ToString();
//此处设置了断点,不过程序没有停止下来。
Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond.ToString() + n);
//textBox1.Text = "n";//
num++;
timer.Change(Timeout.Infinite, 1000);
}
之后重新执行一下timer.start试试