在阻止主线程时允许回调

时间:2014-03-16 19:35:32

标签: c# callback

鉴于以下代码:

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()方法,因为此时回调会被冻结。

有什么办法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

您需要一个消息循环才能使事件处理正常工作。实现这一目标的一种方法是创建和展示"隐藏窗口,使用ShowDialogApplication.Run()。如果单击图标时应该发生的操作正在显示一个窗口,那么可能需要在开始时创建该窗口,但是"显示"它隐藏或最小化。