C # форма шоу и бесконечность цикла - PullRequest
0 голосов
/ 16 января 2012

В одном из моих классов у меня есть код:

    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;, программа не будет зависать.

Я пытался сделать эту функцию в другом потоке, но потом по какой-то причине она не работает должным образом и отображает «белый список».Что я делаю не так и что вы можете сделать в этой ситуации?Извините за плохой английский.

1 Ответ

0 голосов
/ 16 января 2012

Из того, что было сказано в комментариях, у меня может быть решение для вас.

Сначала убедитесь, что вы звоните Job() из основного потока пользовательского интерфейса. Например, непосредственно в обработчике событий объекта пользовательского интерфейса или при вызове метода 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(), когда вы закончите с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...