我遇到类似这样的问题:How can I execute code after my form starts?
但是那里的解决方案对我不起作用,因为我没有运行表单,我正在运行一个自定义控件,这是一个监控事物的托盘图标。 (类似于Icon Dropbox,这是用户与程序唯一的接口)
创建控件时,如何运行代码? (必须在消息泵启动后)
答案 0 :(得分:6)
我认为您正在寻找Application.Idle
事件。
应用程序完成时发生 处理并即将进入 闲置状态。
E.g。
Application.Idle += delegate { Console.WriteLine(Application.MessageLoop); };
// Output: true
Application.Run();
答案 1 :(得分:4)
第一个选项是向自己发布一条Windows消息。这样,在你的线程开始抽取消息之前不会发送它。第二个选项是挂钩Application.Idle事件,该事件在消息队列为空时触发。您的第三个选择是设置并运行一个小持续时间的Timer,并挂钩Tick事件到期。现在的第四个也是最后一个是在使用消息队列作为被触发的机制时异步触发委托。