Довольно часто в моем коде GUI я пишу что-то вроде этого:
private void SecondTimer_Elapsed(object sender, ElapsedEventArgs e)
{
if (progressBar1.InvokeRequired)
{
progressBar1.BeginInvoke(new ElapsedEventHandler(SecondTimer_Elapsed), new[] {sender, e});
return;
}
//Code goes here
}
Конечно, это необходимо, если приложение является многопоточным, так как нам нужно упорядочить поток, который первоначально создал элемент управления. Дело в том, что записывать делегат и помещать аргументы в массив может быть утомительно, и это занимает место в верхней части каждого такого обработчика событий. Есть ли какой-либо атрибут или что-то в этих строках, которое заменит этот код для вас? По сути, это ярлык, который говорит: «Если вы не в том потоке, позвоните мне снова в потоке GUI с теми же аргументами. «