以下代码不会更改文本并停止执行任务

private void button1_Click(object sender, EventArgs e)
    {
        label1.Text = "Test";
        Task.Run(() => MyAsyncMethod());
    }

    public async Task MyAsyncMethod()
    {
        label1.Text = "";
        //everything from here on will not be executed
    }

如果您可以将 async 与 UI 一起使用,那将非常方便

最佳答案

为了通过您需要调用的第二个线程访问 GUI 控件。
以下示例显示了如何正确设置标签的文本

  private void setLabel1TextSafe(string txt)
  {
       if(label1.InvokeRequired)
           label1.Invoke(new Action(() => label1.Text = txt));
       else
           label1.Text = txt;
  }

我希望这能解决你的问题

关于异步任务中的 C# 更改标签文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30281387/

10-12 14:02