Проверяет умение работать с потоками в UI-приложениях.
Используйте:
Control.Invoke для синхронного вызова
Control.BeginInvoke для асинхронного
SynchronizationContext
Способы синхронизации:
Через Invoke:
void UpdateText(string text)
{
if (label1.InvokeRequired)
{
label1.Invoke(() => label1.Text = text);
}
else
{
label1.Text = text;
}
}Через SynchronizationContext:
var uiContext = SynchronizationContext.Current;
Task.Run(() =>
{
uiContext.Post(_ => MessageBox.Show("Done!"), null);
});