В Winform я получаю исключение: «Invoke или BeginInvoke не могут быть вызваны для элемента управления до тех пор, пока дескриптор окна не будет создан» во время AsyncCallback.
Приложение работает нормально на других компьютерах.Мне было интересно, может ли быть компьютер или сетевые настройки, которые могут быть ответственны за исключение.Обратный вызов является междоменным обратным вызовом, однако все данные принимаются и отображаются в Winform, затем возникает исключение.
Исключением является фатальное исключение, и появляется сообщение Windows "Приложение .. перестало работать".
РЕДАКТИРОВАТЬ 1:
public void OpenFormCallback(IAsyncResult ar)
{
// 'this' is a Winform
this.BeginInvoke(new DelegateVoid(SetDataSource));
}
Обычно это работает, теперь вв исключительном случае существует очень быстрое сетевое соединение, которое может быть причиной того, что дескриптор еще не создан.Просто понял, что.
Должен ли я попробовать:
public void OpenFormCallback(IAsyncResult ar)
{
// 'this' is a Winform
while (!this.IsHandleCreated) { }
this.BeginInvoke(new DelegateVoid(SetDataSource));
}
?Рискуете вечной петлей?
РЕДАКТИРОВАТЬ 2: Я пытался:
public void OpenFormCallback(IAsyncResult ar)
{
// 'this' is a Winform
if (IsHandleCreated) { CreateHandle() }
this.BeginInvoke(new DelegateVoid(SetDataSource));
}
Но основная форма не отображается, она приходит в состояние «Не отвечает».