C#形式的show和无穷大循环
本文关键字:大循环 show | 更新日期: 2023-09-27 18:20:34
在我的一个类中,我得到了代码:
private static void Notify(string url, string author, string mess)
{
Toast slice = new Toast(100000, url, author, mess) { Height = 90 };
slice.Show();
return;
}
public void Job()
{
Notify("http://google.com", "username", "hi all");
while (true)
{
if (Run() == false)
break;
}
/* .... */
}
通知功能是显示一个带有我的文本的小框。它工作得很好,但如果它出现在循环之后,那么程序就会挂起。即如果在Notify("http://google.com", "username", "hi all");
添加return;
之后,程序将不会挂起。
我试图在另一个线程中创建这个函数,但由于某种原因,它无法正常工作,并显示了一个"白名单"。我做错了什么?在这种情况下你能做什么?抱歉英语不好。
根据评论中的内容,我可能会为您提供一个解决方案。
首先,确保从主UI线程调用Job()
。例如,直接在UI对象事件处理程序中,或在对UI对象的Invoke()
方法的调用中。
然后我会更改你的代码如下:
private static void Notify(string url, string author, string mess)
{
using(Toast slice = new Toast(100000, url, author, mess) { Height = 90 })
{
slice.ShowDialog();
}
}
public void Job()
{
Notify("http://google.com", "username", "hi all");
}
请注意,我完全删除了循环,并使用ShowDialog()
来防止与程序的进一步交互,直到slice
窗口关闭。
我还把slice
放在了using()
块中,因为当你完成它时,应该调用Dispose()
。