Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Envoke и beginenvoke в чем разница?

445
09 марта 2016 года
Charley
176 / / 16.08.2011
Если выполнить в отдельном потоке нижеследующие конструкции:
 
Код:
if (this.InvokeRequired)
                {
                    this.Invoke((Action)(() =>
                    {
                        this.Close();
                    }));
                 }
Данная конструкция не сработает.
 
Код:
this.BeginInvoke((MethodInvoker)delegate { this.Close(); });
Данная конструкция сработает.
Читал, что в Envoke происходит ожидание вызывающего потока завершения UI потока, а в BeginEnvoke не происходит. Но я так и не разъяснил почему Close работает в одном и не работает в другом.
327
11 марта 2016 года
UserNet2008
748 / / 03.04.2010
Цитата:
Envoke и beginenvoke в чем разница?

Delegate.Invoke: Выполняется синхронно, в том же потоке.
Delegate.BeginInvoke: Выполняется асинхронно, в ThreadPool(пуле потоков).
Control.Invoke: Выполняется в потоке user интерфейса, но вызывающий поток ждет завершения перед продолжением.
Control.BeginInvoke: Выполняется в потоке user интерфейса, но вызывающий поток не ждёт завершения.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог