Пишу прогу на Windows Forms. На форме button and label. Как из асинхронного метода изменять свойства элементов на форме? Нужно изменить текст в label1... или любом другом элементе формы.
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Start")
{
button1.Text = "Stop";
Method();
}
else
{
button1.Text = "Start";
}
}
async void Method()
{
await Task.Run(() =>
{
while (button1.Text == "Stop")
{
Thread.Sleep(1000);
label1.Text += "\n" + DateTime.Now.ToString();
}
});
}
Ругается на строку
label1.Text += "\n" + DateTime.Now.ToString();
http://prntscr.com/rvyreg
ты не можешь использовать контролы, которые в другом потоке
поидее тебе подойдёт вот такая конструкция вместо этой строки: if (label1.InvokeRequired) { label1.Invoke(new Action<string>((s) => label1.Text = s), "нужный тебе текст"); } else { label1.Text = "нужный тебе текст"; }
Обсуждают сегодня