2016-01-23 116 views
0

我正在使用C#窗体在Windows中显示一个吐司式的通知(现有的气球通知是越野车,并且不足以满足我的需要)。窗体不显示没有焦点

我在调用服务器查询更改时在子线程上调用以下代码。

Thread notificationThread = new Thread(() => 
{ 
    NotificationFrame notificationFrame = new NotificationFrame("text1", "text2"); 
    notificationFrame.Show(); 

    Application.Run(); 
}); 
notificationThread.Name = "Notification thread"; 
notificationThread.IsBackground = true; 
notificationThread.Start(); 

但是,这种形式并不总是显示。我发现它只在Visual Studio关注时才起作用。我试图在没有附加调试器的情况下运行它,但这会导致该窗体无法显示。

例如:

  1. 我运行使用调试器,并保持专注于VS2015,框架节目。
  2. 我使用调试器运行并快速切换到另一个窗口,帧不显示。
+0

也许是因为** notificationThread.IsBackground = TRUE; **,它在后台运行,并没有显示。 – McBooley

+0

也许我错了,但我认为IsBackground只意味着线程会在所有其他主要线程都退出时退出。在这种情况下,我确信其他线程正在运行。 – Hele

回答

0

可能它是隐藏的,使用ShowDialouge()而不是像

Thread notificationThread = new Thread(() => 
{ 
    NotificationFrame notificationFrame = new NotificationFrame("text1", "text2"); 
    notificationFrame.Visible = true; 
    notificationFrame.ShowDialog(); 

    Application.Run(); 
}); 
+0

仍然不起作用。另外,我的窗口将'TopMost'设置为true,所以它应该是可见的。 – Hele

+0

您可以确认它是否不显示或隐藏? – Rahul

+0

我不确定。这是不可见的,这是肯定的。我可以执行代码来检查你是否有一些。 – Hele