Привет,
Я разрабатываю какое-то приложение на C #. На данный момент я имею дело с потоками, и у меня есть вопрос, который у меня в голове.
В чем разница между Invoke и BeginInvoke?
Я прочитал какую-то ветку и нашел здесь полезную информацию: здесь
Однако в чем разница между Invoke и BeginInvoke в следующем коде:
private void ProcessRoutine()
{
for (int nValue = StartFrom; nValue <= EndTo; nValue++)
{
this.Invoke(this.MyDelegate, nValue);
//this.BeginInvoke(this.MyDelegate, nValue);
}
MessageBox.Show("Counting complete!");
}
private void MessageHandler(int progress)
{
lblStatus.Text = lblStatus.Text = "Processing item: " + progress.ToString();
progressBar1.Value = progress;
}
где MyDelegate - ссылка на функцию MessageHandler.
Я заметил, что при использовании BeginInvoke lblStatus.Text не обновляется, когда при использовании Invoke обновляется метка.
Кроме того, я знаю, что Invoke ожидает завершения выполнения.
Самый важный случай, который меня интересует, заключается в том, почему в этом случае есть разница в обновлении текста метки.