Ayuda Con Proccess

01/05/2006 - 17:27 por Miguel | Informe spam
Estoy trabajando esta función para revisar si el archivo
ProcesoDisciplinario.mdb, el cual es la base de datos, esta abierta para asi
cerrarla y continuar la ejecución del programa pero e tenido incovenientes
cuando se obtiene el valor y nunca se si esta abierta o cerrada, gracias por
la colaboracón prestada


'Sub Esperar_Cierre()
' Dim proceso As String =
System.IO.Path.GetFullPath("ProcesoDisciplinario.mdb")
' Dim proc() As Process = Process.GetProcessesByName(proceso)
' Dim p As Process
' If proc.Length() = 0 Then
' Exit Sub
' Else
' MessageBox.Show("Por Favor Cierre el archivo
ProcesoDisciplinario.mdb ya que es vital para el funcionamiento de la
aplicación. Si dese guardar por favor hagalo antes de 15 segundos",
"Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
' Dim i As Integer
' For i = 0 To 50 Step 1
' Cursor = Cursors.WaitCursor
' For Each p In proc
' If p.HasExited Then Exit Sub
' Next
' Next i
' End If
' For Each p In proc
' If Not p.HasExited Then p.Kill()
' Next
' Cursor = Cursors.Default
'End Sub
 

Leer las respuestas

#1 José Manuel Agüero
01/05/2006 - 23:43 | Informe spam
Hola, Miguel:

Aunque en Windows XP es posible saber qué proceso está utilizando un archivo determinado, no es nada fácil y, desde luego, .NET Framework no proporciona instrumentos para ello.
Creo que la forma más fácil de saber si un archivo está en uso es intentar abrirlo con bloqueo exclusivo. Si no se puede abrir será porque está siendo usado por otro programa (en el equipo local o en un equipo remoto).
Sería algo como esto (no lo he probado):
try
dim f as new filestream("ProcesoDisciplinario.mdb",open,readwrite,none)
catch ex as ioexception
'Comprobar ex para saber por qué no se pudo abrir.
catch ex as UnauthorizedAccessException
'...
finally
f.close
end try

En cuanto a cerrar la aplicación que está usando el archivo, tendrás que pedirle al usuario que averigüe cuál es y la cierre.

Saludos.


"Miguel" escribió en el mensaje news:
| Estoy trabajando esta función para revisar si el archivo
| ProcesoDisciplinario.mdb, el cual es la base de datos, esta abierta para asi
| cerrarla y continuar la ejecución del programa pero e tenido incovenientes
| cuando se obtiene el valor y nunca se si esta abierta o cerrada, gracias por
| la colaboracón prestada
|
|
| 'Sub Esperar_Cierre()
| ' Dim proceso As String =
| System.IO.Path.GetFullPath("ProcesoDisciplinario.mdb")
| ' Dim proc() As Process = Process.GetProcessesByName(proceso)
| ' Dim p As Process
| ' If proc.Length() = 0 Then
| ' Exit Sub
| ' Else
| ' MessageBox.Show("Por Favor Cierre el archivo
| ProcesoDisciplinario.mdb ya que es vital para el funcionamiento de la
| aplicación. Si dese guardar por favor hagalo antes de 15 segundos",
| "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
| ' Dim i As Integer
| ' For i = 0 To 50 Step 1
| ' Cursor = Cursors.WaitCursor
| ' For Each p In proc
| ' If p.HasExited Then Exit Sub
| ' Next
| ' Next i
| ' End If
| ' For Each p In proc
| ' If Not p.HasExited Then p.Kill()
| ' Next
| ' Cursor = Cursors.Default
| 'End Sub

Preguntas similares