J'essaye d'appeller une méthode dans une classe Form1 dont une instance est
startupScreen depuis un autre thread. J'ai donc écrit le code ci-dessous:
Private Delegate Sub dSetUI(ByVal Param1 As Integer)
Public Sub SetUI(ByVal typeUI As Integer)
Dim tSetUI As New dSetUI(AddressOf startupScreen.UISetUI)
Dim param() As Object = {typeUI}
startupScreen.BeginInvoke(tSetUI, param)
End Sub
Sur la ligne "startupScreen.BeginInvoke(tSetUI, param)" j'obtient l'erreur:
Invoke or BeginInvoke cannot be called on a control until the window handle
has been created.
Pourtant la startup screen est déjà affichée depuis longtemps car j'ai déjà
utilisé un des boutons avant dans l'éxécution du programme.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mehdi
On Thu, 30 Mar 2006 14:22:01 -0800, Tamia wrote:
Sur la ligne "startupScreen.BeginInvoke(tSetUI, param)" j'obtient l'erreur:
Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
Pourtant la startup screen est déjà affichée depuis longtemps car j'ai déjà utilisé un des boutons avant dans l'éxécution du programme.
Que faire? Qu'est-ce qu'un "Window Handle"?
Un Window Handle est l'identifiant unique d'un Control. C'est utilisé par l'API Win32 pour lui permettre de savoir de quel Control il est question (puisque l'API Win32 n'est pas OOP et n'a pas de notions d'objects). Le window handle d'un control est automatiquement créé lorsqu'un control est affiché a l'écran puis détruit lorsque tu appele sa méthode Dispose() ou lorsque le GC le "ramasse".
L'erreur signifie que soit startupScreen n'a pas encore été affiché, soit que startupScreen a déja été détruit. Vu que tu nous dit que startupScreen a déja été affichée lors de l'appel, je pencherai pour la 2eme solution.
On Thu, 30 Mar 2006 14:22:01 -0800, Tamia wrote:
Sur la ligne "startupScreen.BeginInvoke(tSetUI, param)" j'obtient l'erreur:
Invoke or BeginInvoke cannot be called on a control until the window handle
has been created.
Pourtant la startup screen est déjà affichée depuis longtemps car j'ai déjà
utilisé un des boutons avant dans l'éxécution du programme.
Que faire?
Qu'est-ce qu'un "Window Handle"?
Un Window Handle est l'identifiant unique d'un Control. C'est utilisé par
l'API Win32 pour lui permettre de savoir de quel Control il est question
(puisque l'API Win32 n'est pas OOP et n'a pas de notions d'objects). Le
window handle d'un control est automatiquement créé lorsqu'un control est
affiché a l'écran puis détruit lorsque tu appele sa méthode Dispose() ou
lorsque le GC le "ramasse".
L'erreur signifie que soit startupScreen n'a pas encore été affiché, soit
que startupScreen a déja été détruit. Vu que tu nous dit que startupScreen
a déja été affichée lors de l'appel, je pencherai pour la 2eme solution.
Sur la ligne "startupScreen.BeginInvoke(tSetUI, param)" j'obtient l'erreur:
Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
Pourtant la startup screen est déjà affichée depuis longtemps car j'ai déjà utilisé un des boutons avant dans l'éxécution du programme.
Que faire? Qu'est-ce qu'un "Window Handle"?
Un Window Handle est l'identifiant unique d'un Control. C'est utilisé par l'API Win32 pour lui permettre de savoir de quel Control il est question (puisque l'API Win32 n'est pas OOP et n'a pas de notions d'objects). Le window handle d'un control est automatiquement créé lorsqu'un control est affiché a l'écran puis détruit lorsque tu appele sa méthode Dispose() ou lorsque le GC le "ramasse".
L'erreur signifie que soit startupScreen n'a pas encore été affiché, soit que startupScreen a déja été détruit. Vu que tu nous dit que startupScreen a déja été affichée lors de l'appel, je pencherai pour la 2eme solution.