线程下启动不了动态托盘
搜了下网上关于动态托盘图标的源代码就是那一种,但是如果把它放在线程下启动的话则总是启动不了,为什么?private bool live = true;
Thread thread = new Thread(new ThreadStart(testNotify));
thread.start();
private void testNotyfy()
{
if(live == true)
{
timer1.enabled = true;
timer1.start();
}
}
但是用一个BUTTON来触发的话又正常...
private void button1_Click(object sender, System.EventArgs e)
{
timer1.enabled = true;
timer1.start();
}
--------------------编程问答-------------------- 你捕捉下异常,如果是不能夸线程创建的错误
将创建托盘图标的功能分出来,多线程方法里通过form.Invoke()回到form所在线程调用 --------------------编程问答-------------------- 没有任何异常出现,只是当live为true时,托盘没有闪动,而testNotify()内的其它代码都能正常执行,如加入MessageBox.show(" ");可以显示Message窗口
本人初学,能否详细点,谢谢 --------------------编程问答-------------------- 如果在
timer1.enabled = true;
timer1.start();
后面加上
MessageBox.show(" ");
在没有点击确定时,托盘图标是闪动的,只是点击了确定就不动了,为什么/? --------------------编程问答-------------------- UP --------------------编程问答-------------------- 你还是用委托吧. --------------------编程问答-------------------- 用委托this.begininvoke() --------------------编程问答-------------------- --------------------编程问答-------------------- 托盘那个对象是在进程的UI线程初始化的
你这样在辅助线程中调用,多半是会出错的
楼上有个弟兄说了,需要用Form.InvokE 处理你这样的问题
对于FORM上其他控件的操作,如果是辅助线程调用,也需要用INVOKE
否则就会出错...
补充:.NET技术 , C#