C# 没有焦点,形式就不会显现

C# 没有焦点,形式就不会显现,c#,winforms,C#,Winforms,我正在使用C#表单在Windows中显示toast样式的通知(现有的balloon通知有缺陷,无法根据我的需要进行定制) 在轮询服务器进行更改时,我在子线程上调用以下代码 Thread notificationThread = new Thread(() => { NotificationFrame notificationFrame = new NotificationFrame("text1", "text2"); notificationFrame.Show();

我正在使用C#表单在Windows中显示toast样式的通知(现有的balloon通知有缺陷,无法根据我的需要进行定制)

在轮询服务器进行更改时,我在子线程上调用以下代码

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

    Application.Run();
});
notificationThread.Name = "Notification thread";
notificationThread.IsBackground = true;
notificationThread.Start();
但是,此表单并不总是显示。我发现它只有在VisualStudio有焦点时才起作用。我尝试在没有附加调试程序的情况下运行它,但这会导致表单永远不会显示

例如:

  • 我使用调试器运行,并将重点放在VS2015上,如图所示
  • 我使用调试器运行,并快速切换到另一个窗口,框架不显示

  • 可能是隐藏的,使用
    ShowDialouge()
    代替

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

    还是不行。另外,我的窗口的顶部设置为true,所以它应该是可见的。你能确认它是不显示还是隐藏吗?我不确定。它是看不见的,这是肯定的。我可以执行代码检查您是否有。可能是因为notificationThread.IsBackground=true,它在后台运行,不显示。也许我错了,但我认为IsBackground只意味着线程将在所有其他主线程退出时退出。在本例中,我确信其他线程正在运行。