Я пытаюсь показать окно, когда пользователь должен уведомлять о какой-либо работе. Каждый думаю, что работа прекрасна, но я хочу показать абсолютную абсолютную форму. Я установил свойство формы TopMost = true, но он не работает, окно по-прежнему отображается за другими формами.Windows Form TopMost не работает с BackgroundWorker?
Я полагаю, что TopMost = true не работает только с BackgroundWorker, когда я использую Timer class, он отлично работает. Мне интересно, почему? Кто-нибудь может мне это объяснить?
Вот простой пример того, что я хочу сделать.
static void Main(string[] args)
{
try
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerAsync();
Application.Run(new Form());
}
catch (Exception exp)
{
Console.WriteLine(exp);
}
}
static void worker_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
System.Threading.Thread.Sleep(1000);
if (NeedNotify())
{
NotifyForm myNotifyForm = new NotifyForm();
myNotifyForm.TopMost = true;
myNotifyForm.ShowDialog(); // NotifyForm still show behind others windows
}
}
}
private static bool NeedNotify()
{
return true;
}
}
уведомление в «реальном приложении» является «внутри» почтового цикла, это пример. –
, но у вас есть право с «другой нитью», я проверяю TopMost на Thread и не работает, как BackgroundWorker. спасибо –