在我的一个课程中,我有代码:
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;
之后,程序将不会挂起。
我试图在另一个线程中创建此函数,但由于某种原因它无法正常工作并显示“白名单”。我做错了什么,在这种情况下你能做些什么?抱歉英语不好。
答案 0 :(得分:0)
根据评论中的说法,我可能会为您提供解决方案。
首先,确保从主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()
。