View Full Version : VB2008 backgroundworker e Return, incompativeis :s


ruipedro
03-08-2008, 09:35
ola a todos, imaginem que tem 1 função em (VB2008) e a função devolve um valor.
algo deste tipo:

Private Function porenviar() As Boolean
return True
End Function
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ MyBase.Load
if porenviar=true then
msgbox("Funciona!!!")
end sub


Visto que a função e muito pesada coloca-me o formulario muito lento dai um backgroundworker mas eu nao consigo devolver valores com o return :S

ficaria algo deste genero o que eu queria.


Public Class Form1.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load

If BackgroundWorker1_DoWork_1() = True Then
MsgBox("work")
End If

End Sub

Private Sub BackgroundWorker1_DoWork_1(ByVal sender As System.Object, ByVal e As
System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
return True
End Class

Mas este exemplo e o que eu pretendo mas o VB nao aceita isto. Se fosse possivel coloquem a soluçao para este caso, desde ja obrigado.

jpaulino
03-08-2008, 12:21
O Sub não retorna nenhum resultado e o Sub BackgroundWorker1_DoWork_1 não é excepção. Apenas as funções retornan algo, de acordo com o declarado. Na tua função porenviar() o resultado é booleano.

O que queres fazer exactamente ?

ruipedro
03-08-2008, 17:36
O que eu queria exactamente era fazer um background mas no fim preciso de saber o resultado da operaçao, por isso usava um return. nao estou a ver como posso fazer entao :S

Deixa o teu mail se nao te importares. Obrigado.

jpaulino
03-08-2008, 18:32
Então utiliza o evento do BackgroundWorker - RunWorkerCompleted que indica que terminou.

iznougud
05-08-2008, 11:20
Se quiseres algo mais complexo em que queres mesmo saber resultados das funcoes podes sempre criar uma classe e dentro dessa classe ter Subs que executem em threads separadas e podes usar variaveis globais dentro dessa classe para guardar os resultados que queres