以下代码不会更改文本并停止执行任务
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/