2015-07-31 4 views
0

Как объявить EndInvoke для BeginInvoke как это:Декларирование EndInvoke для MethodInvoker делегата

this.BeginInvoke((MethodInvoker) delegate() { 
    frmPressEnableButton.ShowDialog(); 
}); 

?

UPDATE: Это два mesages ошибок, которые я постоянно получаю во время выполнения 1. Invoke или BeginInvoke можно назвать элемент управления до тех пор, оконная ручка не была создана. 2. форма, которая уже видна, не может отображаться как модальное диалоговое окно. Перед вызовом ShowDialog установите для свойства Visible значение «false».

Следует отметить, что эта проблема была начата после того, как я включил другое диалоговое окно, в котором 1. я прохожу сам основную форму по ссылке 2. Я не называю Invoke или BeginInvoke для нового диалогового окна. Это должно продолжаться в фоновом режиме.

+0

Можете ли вы объяснить и показать бит больше того, что вы пытаетесь, я имею в виду больше контекста? – terrybozzio

+0

Если это форма Windows, 'EndInvoke' не требуется, если вы не хотите получить результат от делегата, но' MethodInvoker' не имеет возвращаемого значения. –

+0

это как раз моя проблема. В настоящей версии у меня нет возможности реализовать 'Async'. Это работало нормально, пока дополнительная функция вызова не разбила его. Invoke или BeginInvoke можно вызвать в элементе управления до тех пор, пока дескриптор окна не будет создан - это точная ошибка, которую я получаю. Я предполагаю, что это связано с не прекращением этого потока в threadpool – srivas

ответ

0

Не уверен, что вы пытаетесь сделать, но это выглядит, как вы должны были бы интерфейс IAsyncResult сохранить результат асинхронной операции и использовать его в дальнейшем в вашем EndInvoke метод:

IAsyncResult result = this.BeginInvoke((MethodInvoker) delegate() { 
    frmPressEnableButton.ShowDialog(); 
}); 

this.EndInvoke(result); // waits until the async call completes 
+0

Помогает ли это в окончательном завершении потока делегирования? – srivas

+0

Решение не работает. Можете ли вы проверить обновление и предоставить возможное решение? – srivas

+0

Решение, что именно? Вы спросили: «Как объявить EndInvoke для BeginInvoke как это», и так вы это делаете. если у вас есть другой вопрос, было бы неплохо спросить об этом в отдельном посте. – Fabjan

 Смежные вопросы

  • Нет связанных вопросов^_^