Как открыть form2 из form1 (из асинхронной задачи) - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь открыть form2 из асинхронной задачи в form1. Когда я пытаюсь открыть его, используя:

public void DoWorkPollingTask()
{
    Form f2 = new Form2();
    Task.Run(async () =>
            {
                while (true)
                {
                    f2.Show();

                    await Task.Delay(10000);
                }
            });
}

это показывает мне это: enter image description here

Пожалуйста, не смущайтесь из-за этой ошибки подключения к Интернету. Это не всплывающее окно визуальной студии, это просто моя форма2, но проблема в том, что он загружен не полностью, как вы можете видеть на этом изображении. Это должно выглядеть так: enter image description here

Есть ли способ показать форму form2 из задачи таймера задачи, которая выполняется каждые x секунд?

1 Ответ

0 голосов
/ 12 апреля 2019

Вы пытаетесь получить доступ к элементам пользовательского интерфейса из потока, не относящегося к пользовательскому интерфейсу, и это может вызвать множество проблем.

Просто не используйте поток пула потоков, так как здесь нет никакой причины делать это вообще.

public async void DoWorkPollingTask()
{
    Form f2 = new Form2();
    while (true)
    {
        f2.Show();

        await Task.Delay(10000);
    }
}

Есть ли способ показать форму form2 из задачи таймера задачи, которая запускается каждые x секунд?

Вы можете использовать фактический таймер, если хотите. Код уже очень прост, но если вы просто предпочитаете использовать таймер, то используйте таймер. Просто убедитесь, что вы используете таймер, предназначенный для работы с инфраструктурой пользовательского интерфейса, а не с одним из системных таймеров, чтобы он вызывал событие в потоке пользовательского интерфейса.

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