当前位置:编程学习 > C#/ASP.NET >>

线程下启动不了动态托盘

搜了下网上关于动态托盘图标的源代码就是那一种,但是如果把它放在线程下启动的话则总是启动不了,为什么?
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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,