在阻塞主线程时允许回调

本文关键字:许回调 回调 线程 | 更新日期: 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()方法,因为此时回调会被冻结。

有办法存档吗?

在阻塞主线程时允许回调

您需要一个消息循环来进行事件处理。实现这一目标的一种方法是使用ShowDialogApplication.Run()创建并"显示"一个隐藏窗口。如果单击图标时应该执行的操作是显示一个窗口,那么最好在开始时就创建该窗口,但将其"显示"为隐藏或最小化。