Buongiorno a tutti,
ho il seguente codice in un eseguibile che si avvia con le utilità di pianificazioni windows:
Dim PrcProcesso As System.Diagnostics.Process()
Me.Hide()
Do
PrcProcesso = Process.GetProcessesByName("MSACCESS")
If (PrcProcesso.Length > 0) Then
PrcProcesso(0).Kill()
System.Threading.Thread.Sleep(300)
End If
Loop While (PrcProcesso.Length > 0)
Shell("rundll32.exe url.dll,FileProtocolHandler C:\dati\aggiorna.accdb", AppWinStyle.MaximizedFocus)
Close()
che a inizio esecuzione controlla che non ci siano processi MSACCESS in esecuzione, in caso ci siano li termina ed avvia un db che effettua delle operazioni e a termine operazioni effettua la compattazione del database visto che movimenta un numero elevato di dati.
Ha sempre fatto il lavoro in modo corretto ma sta capitando da un mesetto a questa parte che alla chiusura il db non viene rilasciato in tempo e quindi non riesce a chiudersi e di conseguenza a compattarsi restando appeso con un messaggio di errore che indica lo stato di compattazione non possibile...
come posso far si che l'eseguibile venga scaricato dalla memoria e rilasci il db prima della compattazione?
grazie!