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;之后,程序将不会挂起。

我试图在另一个线程中创建这个函数,但由于某种原因,它无法正常工作,并显示了一个"白名单"。我做错了什么?在这种情况下你能做什么?抱歉英语不好。

C#形式的show和无穷大循环

根据评论中的内容,我可能会为您提供一个解决方案。

首先,确保从主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()