Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Problema backgroundworker
venerdì 15 febbraio 2008 - 12.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ReRosso
Profilo
| Junior Member
67
messaggi | Data Invio:
ven 15 feb 2008 - 12:12
Ciao ragazzi...
Ho un problema con il componente backgroundworker in un'applicazione vb.net 2005.
Non riesco ad intercettare gli errori...
Esempio:
Private Sub bw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bw.DoWork
' eseguo alcune operazioni
End Sub
-------------------
Private Sub bw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bw.RunWorkerCompleted
If Not (e.Error Is Nothing) Then
' rileva errore
ElseIf e.Cancelled Then
' operazione bloccaa da utente
Else
' tutto ok
End If
End Sub
* il problema e' che se si verifica un eccezione nel codice della funzione "Do work" siccome non c'e' un try-catch esecuzione viene boccata...ma se si manda avanti da debugger, si vede che l'esecuzione passa alla funzione "runworkercomplete" e l'errore viene rilevato, cioe' passa da ....e.error is nothing...(fin qui tutto bene). Inserisco allora un try-catch in "do work", in modo che l'esecuzione non venga fermata ma a questo punto all'ingresso della funzione "runworkercomplete" lo stato di errore non viene piu' rilevato e l'esecuzione prosegue come se fosse tutto ok...
Dove sbaglio?????
aiedail92
Profilo
| Expert
993
messaggi | Data Invio:
ven 15 feb 2008 - 12:38
Ciao
É giusto che se inserisci un blocco Try Catch l'errore non venga più mostrato, perchè l'eccezione è stata intercettata (quindi è come se non fosse avvenuta) all'interno del blocco di codice che l'ha generata.
Per risolvere potresti inserire all'interno del metodo bw_DoWork una variabile bool, dove memorizzi se si è verificato un errore, impostandola a false quando la dichiari. Quindi nel blocco catch la imposti su vero, e alla fine del metodo la controlli con un if, e se è true generi tu un'eccezione, magari anche personalizzata.
In questo modo il codice che avevi nel bw viene eseguito tutto come prima, e l'eccezione, se necessario, viene segnalata comunque.
Luca
ReRosso
Profilo
| Junior Member
67
messaggi | Data Invio:
ven 15 feb 2008 - 12:58
Be'!!!
Avevo già pensato a qualche cosa del genere....speravo solo che si potesse gestire in modo meno "casereccio"....comunque l'importante è che funzioni..
Grazie mille e ti accetto al volo la risposta
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !