Допустим, я создал объект O в потоке T. Как я могу получить изнутри объекта O поток T и вызвать метод в этом потоке ?.Таким образом, форма, создавшая объект, не будет обязательной для этого:
private void ChangeProgress(int value)
{
progressBar1.Value = value;
}
void FD_ProgressChanged(object sender, DownloadEventArgs e)
{
if (InvokeRequired)
{
Invoke(new Action<int>(ChangeProgress), new object[] { e.PercentDone });
}
else ChangeProgress(e.PercentDone);
}
, что просто уродливо и требует от того, кто использует объект, чтобы выяснить, какие события возникают на том же самом объекте.поток, который создал объект, а который нет, и добавьте код if(InvokeRequired)...else
к тем, которые не являются, или просто добавьте код в каждый отдельный обработчик событий.Я думаю, что было бы более элегантно, если бы сам объект вызывал событие в нужном потоке.Возможно ли это?