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
Strano problema nell'esecuzione di un EXE
martedì 30 settembre 2008 - 11.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mar 30 set 2008 - 11:48
Ho uno strano comportamento nell'applicativo che sto implementando.
Il programma legge dei dati da un server web e li salva in un database locale.
La cosa strana è che se lo avvio in modalità "Release" da Visual Studio 2005 funziona a meraviglia, mentre se lo avvio direttamente dal file exe generato in compilazione (dentro la cartella Release) si comporta in maniera diversa, bloccandosi al termine dell'esecuzione.
Avete qualche idea su quale possa essere la causa? Nell'applicativo utilizzo un backgroundworker, potrebbe dipendere da quello?
Analizzando il codice ho notato che l'esecuzione si blocca proprio al termine del processo background.
Vi prego aiutatemi!
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 30 set 2008 - 14:03
>Avete qualche idea su quale possa essere la causa? Nell'applicativo
>utilizzo un backgroundworker, potrebbe dipendere da quello?
>Analizzando il codice ho notato che l'esecuzione si blocca proprio
>al termine del processo background.
Eh può essere, forse una routine che non termina (e quindi ti blocca l'applicazione).
Non hai una sorta di logging all'interno della applicazione che ti logga eventuali Console.Writeline su file di testo così riesci a capire dove si blocca il codice.
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mar 30 set 2008 - 14:40
Allora, all'interno della classe prinicipale attivo il background worker in questo modo:
Me.bkw_LeggiWeb.RunWorkerAsync(numP)
While bkw_LeggiWeb.IsBusy
Application.DoEvents()
End While
gli eventi gestiti dal background worker sono:
Private Sub bkw_LeggiWeb_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bkw_LeggiWeb.DoWork
Dim numP As Integer = CType(e.Argument, Integer)
Dim msg() As String = Funzione_Inizio(numP)
e.Result = msg
End Sub
Private Sub bkw_LeggiWeb_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bkw_LeggiWeb.RunWorkerCompleted
Dim msg() As String = DirectCast(e.Result, String())
If msg IsNot Nothing Then
Funzione_Fine(msg)
End If
End Sub
mettendo un msgbox ho notato che il programma si blocca proprio dentro al RunWorkerCompleted e non riesco a capire perchè. Ho provato anche a commetare tutte le istruzioni all'interno ma si blocca lo stesso.
La cosa che proprio non capisco è come mai lanciandolo in Release da Visual Studio funziona tutto perfettamente. Mentre con l'exe no.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 30 set 2008 - 14:57
>mettendo un msgbox ho notato che il programma si blocca proprio
>dentro al RunWorkerCompleted e non riesco a capire perchè. Ho
>provato anche a commetare tutte le istruzioni all'interno ma
>si blocca lo stesso.
Ma scusa il codice che esegue il BackgroundWorker l'hai tolto ?
>La cosa che proprio non capisco è come mai lanciandolo in Release
>da Visual Studio funziona tutto perfettamente. Mentre con l'exe
>no.
Prova a fare un Clean della Solution e poi un Rebuild
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mer 1 ott 2008 - 08:47
Mi sono reso conto che si tratta di un problema di grafica, mi spiego meglio.
Il processo in background va a popolare una griglia visualizzata a schermo, quando le righe eccedono in verticale automaticamente si deve creare la scrollbar...proprio in questa fase il programma avviato tramite exe si blocca.
Se lo termino e poi lo riapro non ho più alcun problema perchè la scroll è già visualizzata in quanto alcune righe sono già state caricate in precedenza.
C'è un modo per visualizzare la scrollbar anche in assenza di righe? Senza che venga attivata solo quando le righe sono maggiori dell'area verticale.
lukepet
Profilo
| Junior Member
110
messaggi | Data Invio:
mer 1 ott 2008 - 10:21
Sono riuscito a risolvere.
Alla fine per aggirare il problema ho dovuto impostare ScrollBars.Horizontal prima dell'avvio del backgroundworker per poi rimmetterla a Both appena terminato.
Sinceramente non ho ancora capito il motivo di questo strano comportamento, ma in questo modo funziona.
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 !