Раньше я часто использовал Invoke для решения подобных проблем, и проблем никогда не было. Но слышал, что с появлением async/await эта проблема решена. В частности, натыкаюсь на такие ответы, где автор первого ответа пишет, что для решения, начиная с .NET 4.0 можно "Использовать Асинхронную модель на основе задач (TAP) и ключевые слова async-await".
Сейчас я использую .NET Framework 4.5.2 и VS2015, и пытаюсь следовать его совету:
private async void startButton_Click(object sender, EventArgs e){
await Task.Run(() => Scope_Save(sourceText.Text, folderPath, statusView, ref flag));
}
void Scope_Save(string source, string path, RichTextBox logText, ref bool? _flag)
{
logText.Text += Environment.NewLine + "Читаем построчно:";
}
Здесь sourceText и statusView - это RichTextBox-ы. В принципе от первого легко избавиться на обычный текст, но не суть. При первом обращении к logText, я получаю ошибку из сабжа. Что я делаю не так?