sunny被注册
2019-01-09 09:48
采纳率: 100%
浏览 540

C#自定义控件构造函数内内启动线程导致控件添加即运行线程

如题,用C#写的自定义控件在构造函数内启动线程或Timer等循环会导致控件添加到程序即启动(程序没有运行);
需求是需要一个控件循环监视一个对象并把监视结果以颜色显示;
控件一添加即运行感觉很怪也不合理,不知如何等到程序运行再启动控件内循环?图片说明

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Yentre 2019-01-15 13:52
    已采纳

    首先你得让你的控件继承Component类
    like this
    图片说明

    之后你就可以有一个这个属性,就是你需要的东西
    图片说明
    这个属性为True的话,代表当前处在VS的设计模式,你可以直接把你的初始化代码return掉,如果为False说明程序已经运行

    已采纳该答案
    打赏 评论
  • 燕双嘤嘤 2019-01-09 13:58

    可以使用AutoResetEvent来控制执行的顺序:
    public static AutoResetEvent autoResetEvent = new AutoResetEvent(false);
    autoResetEvent.WaitOne();//在需要等待执行的地方添加,当程序执行到此处时,就会处于等待状态,直到下面的语句执行,发送信号过来才会继续执行
    autoResetEvent.Set();//在启动程序之后添加,控制等待的语句在需要的时间执行。

    打赏 评论

相关推荐 更多相似问题