如何从Form1打开Form2(通过异步任务)

时间:2019-04-12 14:05:26

标签: c# forms

我正在尝试从form1中的异步任务打开form2。 当我尝试使用以下方法打开它时:

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

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

它向我展示了这一点: enter image description here

请不要为该Internet连接错误感到困惑。这不是Visual Studio的实际弹出窗口,仅是我的form2,但是问题是,您没有在该图像上看到它的全部内容。它看起来应该像这样: enter image description here

有什么办法可以使每隔x秒运行的任务计时器任务显示form2吗?

1 个答案:

答案 0 :(得分:0)

您正在尝试从非UI线程访问UI元素,这将导致很多问题。

不要使用线程池线程,因为这里完全没有理由这样做。

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

        await Task.Delay(10000);
    }
}
  

有什么办法可以使每隔x秒运行的任务计时器任务显示form2吗?

如果愿意,可以使用 actual 计时器。该代码已经非常简单,但是如果您只是喜欢使用计时器,请使用计时器。只需确保使用设计用于UI框架的计时器(而不是系统计时器之一),这样它将在UI线程中触发该事件。