Здравствуйте, помогите разобраться, я не программист C# и мне с трудом дается разобраться с некоторыми моментами.
Значит, есть у меня форма, в которой всего один элемент UI это - label1, а так же метод myFunc() и его асинхронный вызов myFuncAsync.
Ну вот так:
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyProject
{
public partial class FormTest : Form
{
public FormTest()
{
InitializeComponent();
}
// Простой статический метод
public static void bar()
{
MessageBox.Show("Hello dude ;)");
}
// Загрузка формы
private void FormTest_Load(object sender, EventArgs e)
{
myFuncAsync();
}
// Функция которая будет выполняться в отдельном потоке
private void myFunc()
{
Thread.Sleep(2000);
FormTest.bar();
label1.Text = "Brorororor"; // КАК ТУТ ПОЛУЧИТЬ ДОСТУП К ЭЛЕМЕНТУ UI ????????
}
// Асинхронный вызов myFunc
private async void myFuncAsync()
{
Task task = new Task(myFunc);
task.Start();
await task;
}
}
}
Все работает, кроме доступа к UI из потока. Выхватываю понятное исключение:
Исключение типа "System.InvalidOperationException" возникло в System.Windows.Forms.dll, но не было обработано в коде пользователя
Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан.
Как мне с потока до UI достучаться?
Спасибо.