在阻塞主线程时允许回调
本文关键字:许回调 回调 线程 | 更新日期: 2023-09-27 17:50:35
给定以下代码:
public static void main()
{
NotifyWindow.NotifyIcon.DoubleClick += new EventHandler(NotifyIconDoubleClick);
NotifyWindow.Show(500, "some text", "some title");
Thread.Sleep(10000);
}
private static void NotifyIconDoubleClick(Object sender, EventArgs e)
{
Clipboard.SetText("test");
}
(NotifyWindow是NotifyIcon的包装)
我想给用户提供双击NotifyWindow的可能性,以便触发事件。遗憾的是,这不适用于Thread.Sleep()方法,因为此时回调会被冻结。
有办法存档吗?
您需要一个消息循环来进行事件处理。实现这一目标的一种方法是使用ShowDialog
或Application.Run()
创建并"显示"一个隐藏窗口。如果单击图标时应该执行的操作是显示一个窗口,那么最好在开始时就创建该窗口,但将其"显示"为隐藏或最小化。