Występuje problem z aplikacją Windows Forms.Co jest nie tak z moim wywołaniem krzyżowym w Windows Forms?
Formularz musi być wyświetlany z innego wątku. Więc w klasie formularza, mam następujący kod:
private delegate void DisplayDialogCallback();
public void DisplayDialog()
{
if (this.InvokeRequired)
{
this.Invoke(new DisplayDialogCallback(DisplayDialog));
}
else
{
this.ShowDialog();
}
}
Teraz za każdym razem, biegnę, aktualny InvalidOperationException
jest rzucony na linii this.ShowDialog();
:
„operacja Cross wątek nie ważne: Kontroli "SampleForm" dostępny z wątku innego niż wątek, na którym został utworzony. "
Co jest nie tak z tym kodem? Czy nie jest to prawidłowy sposób nawiązywania połączeń z wątkami krzyżowymi? Czy jest coś specjalnego z ShowDialog()
?
Z ciekawości, co ma IsHandleCreated show? –
@Marc Gravell: IsHandleCreated jest fałszywe. Naturalnie, jak powiedziało kilka osób, kod jest wykonywany przed wyświetleniem formularza. –