OVH Cloud OVH Cloud

est-ce normal ??

12 réponses
Avatar
Titeuf
Bonjour,

j'ai une fonction toute simple (en bas) qui ne recoit rien et qui ne
retourne rien.
je créer un thread pour cette fonction et le démarre :

dim tThread as new thread(addressof test)
tThread.Start()


mais j'obtient une erreur dans ma fonction lors de l'execution.
au niveau des form1.progressbar1
en gros le débuggeur me dit qu'il faut créer une nouvelle instance pour cet
objet !

J'ai fait un autre test avec la meme fonction mais sans passer ma fonction à
un thread
Et la sa marche je n'ai pas l'erreur !

J'en conclu que cela vient du fait que ma fonction tourne dans un thread
mais je ne sais pas comment contourner le problème.
Si quelqu'un a une petite idée j'en serait ravis :)
Merci d'avance


'-----------------------------
'fonction test
'-----------------------------
public sub test()

dim i as integer

form1.progressbar1.maximum= 1000000
for i = 0 to 1000000
form1.progressbar1.value = i
next

2 réponses

1 2
Avatar
Patrice
Où est-il dans ton formulaire exactement ? On dirait que tu le lances alors
que le formulaire n'est pas entièrement initialisé si j'en crois ce message.

Bon c'est pas tout ça mais faut que j'aille en vacances ;-)

--

Patrice

"Titeuf" a écrit dans le message de
news:
Je comprend l'erreur mais je ne sais pas comment la résoudre
j'ai essayé déjà en initialisant l'objet mais j'ai un autre message qui me
dit "Invoke or BeginInvoke cannot be called on a control until the window
handle has been created."
peut etre que j'initialise mal mon objet !

le code dans ma form1 (avec une progressbar1 dedans)

Dim t As New Thread(AddressOf test)
t.Start()


sa c'est le code dans mon module1.vb :

Public Delegate Sub SyncDelegate()
Module Module1

Public Sub test()

Dim del As New SyncDelegate(AddressOf test2)
'Dim prg As New Form1

'prg.ProgressBar1.BeginInvoke(del)

Form1.ProgressBar1.BeginInvoke(del)

End Sub

Public Sub test2()

Dim i As Integer

Form1.ProgressBar1.Maximum = 1000000

For i = 0 To 1000000
Form1.ProgressBar1.Value = i
Next

End Sub

End Module




Avatar
Titeuf
Je le lance à partir d'un bouton pourtant !
enfin bon encore un mystère ce message pour moi.... :)

lol pour moi les vacances commencent dès la semaine prochaine ouf... ;-)


"Patrice" a écrit dans le message de news:
%
Où est-il dans ton formulaire exactement ? On dirait que tu le lances
alors
que le formulaire n'est pas entièrement initialisé si j'en crois ce
message.

Bon c'est pas tout ça mais faut que j'aille en vacances ;-)

--

Patrice

"Titeuf" a écrit dans le message de
news:
Je comprend l'erreur mais je ne sais pas comment la résoudre
j'ai essayé déjà en initialisant l'objet mais j'ai un autre message qui
me
dit "Invoke or BeginInvoke cannot be called on a control until the window
handle has been created."
peut etre que j'initialise mal mon objet !

le code dans ma form1 (avec une progressbar1 dedans)

Dim t As New Thread(AddressOf test)
t.Start()


sa c'est le code dans mon module1.vb :

Public Delegate Sub SyncDelegate()
Module Module1

Public Sub test()

Dim del As New SyncDelegate(AddressOf test2)
'Dim prg As New Form1

'prg.ProgressBar1.BeginInvoke(del)

Form1.ProgressBar1.BeginInvoke(del)

End Sub

Public Sub test2()

Dim i As Integer

Form1.ProgressBar1.Maximum = 1000000

For i = 0 To 1000000
Form1.ProgressBar1.Value = i
Next

End Sub

End Module








1 2