System.ComponentModel.BackgroundWorker

sabato 18 aprile 2009 - 21.53

govgiu0 Profilo | Newbie

Buongiorno a tutti.
Ho un problema di questo tipo:
All'interno di un form devo lanciare un'elaborazione abbastanza pesante. Di conseguenza creo un backgroundworker e nel periodo di elaborazione visualizzo un messaggio "attendere prego" intermittente nella form principale.

nessun problema per l'elaborazione che va a buon fine.

Il problema è che dopo diverso tempo (dai 3 ai 5 minuti) il programma si interrompe con questa segnalazione d'errore
"Eccezione non gestita a 0x4ddf6542 in Pgm1.exe: 0xC0000005: Violazione di accesso nella lettura del percorso 0x4ddf6542."

L'elaborazione in background è dunque correttamente terminata e il messaggio appare quando l'utente sta normalmente lavorando sul form

Ho provato in tutti i modi e ho cercato qualcuno che avesse avuto il mio stesso problema ma nulla di fatto.

Qualcuno di Voi riesce a darmi una mano??

Grazie

aiedail92 Profilo | Expert

Ciao

Non riesci a debuggare il programma? Se riesci a fermarlo dove ti lancia l'eccezione, poi dovrebbe essere possibile, scalando lo stack frame, risalire al metodo che la solleva. Per caso fai operazioni con memoria non gestita e\o dll esterne non in .net?

Luca

govgiu0 Profilo | Newbie

Il problema è proprio quello. Il messaggio d'errore esce quando la procedura in background é già terminata da un po. Lkapplicativo si ferma ma non su un'istruzioine particolare,
Sembrerebbe che sia ancora il background che si pianta, l'appliativo se fatto funzionare senza L'utilizzo della procedura asincrona funziona benissimo!
Non faccio operazioni al di fuori di .net e non ho idea di cosa voglia dire 'memoria non gestita'.

Sono riuscito a capire una cosa..
Se NON APRO Explorer funziona tutto.. Come apro explorer ho l'errore???? Non capisco!!

govgiu0 Profilo | Newbie

Problema risolto...
Il programma andava in crash per il motivo seguente:
Nella parte in backgroud veniva creato un db con le funzionalità di adox.catalog e di conseguenza il componente COM non veniva correttamente rilasciato e quindi il processo si interrompeva dopo x secondi dal termine.
Soluzione:
la creazione del Db è stata spostata dal background al foreground e magicamente il problema è sparito..

Spero di essere stato di aiuto anche ad altri.
GRAZIE per l'attenzione..

Bye
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 !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5