如题,用C#写的自定义控件在构造函数内启动线程或Timer等循环会导致控件添加到程序即启动(程序没有运行);
需求是需要一个控件循环监视一个对象并把监视结果以颜色显示;
控件一添加即运行感觉很怪也不合理,不知如何等到程序运行再启动控件内循环?
首先你得让你的控件继承Component类
like this
之后你就可以有一个这个属性,就是你需要的东西
这个属性为True的话,代表当前处在VS的设计模式,你可以直接把你的初始化代码return掉,如果为False说明程序已经运行
可以使用AutoResetEvent来控制执行的顺序:
public static AutoResetEvent autoResetEvent = new AutoResetEvent(false);
autoResetEvent.WaitOne();//在需要等待执行的地方添加,当程序执行到此处时,就会处于等待状态,直到下面的语句执行,发送信号过来才会继续执行
autoResetEvent.Set();//在启动程序之后添加,控制等待的语句在需要的时间执行。