CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Error de Archivo

(1/1)

tzalejo:
hola a todos los foreros!
tengo una error k me esta matando...desde hace varios dias no puedo arreglarlo...me dice "el proceso no puede obtener acceso al archivo SEQUIDO D LA DIRECCION DND ESTA EL ARCHIVO porque esta siendo utilizado en otro proceso" bueno entiendo xk es el error pero no puedo arreglarlo...
Les explico mas o menos kmo viene la mano...en mi bd tengo una campo dnd guard el nombre d una imagen (solo eso) en un formulario yo llamo para realizar varias operacione d modificaciones de la bd y en dnd tmb tengo esta imagen para poderla cambiar o eliminar...y cuando kiero recuperla imagen utilizo el IO.Path.GetFullPath("Fotos") para recuperarla desde la carpeta "Fotos" y la muestro en un picture...el problema es cuand kiero cambiar d imagen y guardarla con el mismo nombre d la anterior...me salta el error...
les dejo el codigo para k le hechen un vistazo..


--- Código: vb.net --- Public Sub CargarProducto()            Try            oDataAdapterP = New SqlDataAdapter("SELECT Productos.* FROM Productos " & _                                        " WHERE Id_Categoria = " & iCategoria, CnSql)            'creo commandbuilder            Dim oComBuilder As New SqlCommandBuilder(oDataAdapterP)            'creo el dataset            oDataSetP = New DataSet            'abro la conexion            CnSql.Open()            'cargo el dataset            oDataAdapterP.Fill(oDataSetP, "Productos")            CnSql.Close()            Dim oDataRowP As DataRow            PictureBox2.Image = Nothing 'limpio el picturebox            If oDataSetP.Tables("Productos").Rows.Count > 0 Then                oDataRowP = oDataSetP.Tables("Productos").Rows(iPosicionFilaActualP)                txtProducto.Text = CStr(oDataRowP("NombreProducto"))                txtPrecio.Text = CStr(oDataRowP("Precio"))                iProducto = CInt(oDataRowP("id_Producto")) 'variable para modificar mas tarde                'pregunto si exite una foto                 If Not oDataRowP("Foto") Is DBNull.Value Then                    MostrarImagenPict(Me.PictureBox2, CInt(oDataRowP("Foto"))) 'carga la foto en li picture                End If            Else                txtProducto.Text = ""                txtPrecio.Text = ""             End If        Catch ex As Exception            MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "SISTEMA MACHADO")        End Try    End Sub Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click'este procedimiento el k acepta los cambio...TryDim oDataRow As DataRowoDataRow = Me.oDataSetC.Tables("Categorias").Rows(Me.iPosicionFilaActualC)oDataRow("NombreCategoria") = Trim(txtCategoria.Text)Me.oDataAdapterC.Update(Me.oDataSetC, "Categorias")If txtProducto.Enabled = True Then 'pregutno si hay producto en la categoriaDim oDataRowP As DataRowoDataRowP = oDataSetP.Tables("Productos").Rows(iPosicionFilaActualP)oDataRowP("NombreProducto") = Trim(txtProducto.TextIf Me.PictureBox2.Image IsNot Nothing Then 'pregunto si tengo una imagenoDataRowP("Foto") = iProductoEnd IfoDataAdapterP.Update(oDataSetP, "Productos")'aka trate d liberar los recursos pero no pasa nadaoDataSetP = NothingoDataSetC = NothingoDataAdapterC = NothingoDataAdapterP = NothingoDataRowP.Delete()If Me.PictureBox2.Image IsNot Nothing ThenFile.Delete(Path.GetFullPath("Fotos") & "" & iProducto)'aka me da el errorElseFile.Delete(Path.GetFullPath("Fotos") & "" & iProducto)'aka tmb!End IfEnd IfCatch ex As ExceptionMsgBox(ex.Message.ToString, MsgBoxstyle.Critical, "SISTEMA MACHADO")End TryEnd Sub 
trate de liberar los recursos pero no pasa nada...va no se si ese es la solucion..espero k me puedan ayudar...xk me hizo doler la cabeza je...saludos...espero averme explicado...desde ya gracias...ale

tzalejo:
Bueno para akellos k tengan el mismo error o para akellos  k no lo tengan ...

el error me decia k hay el proceso no puede obtener acceso al archivo  porque esta siendo utilizado en otro proceso y bueno el proceso era mi propia aplicacion pero yo sabia eso pero cuando intentaba liberar los recusos d mi picture no lo hacia bien... o sea yo solo hacia era esto:

--- Código: vb.net ---Me.PictureBox2.Image = Nothing y en realidad era asi:

--- Código: vb.net ---Me.PictureBox2.Image.Dispose()Me.PictureBox2.Image = Nothing y x eso me saltab el error! bueno eso era todos..saludos  :hitcomp:

Navegación

[0] Índice de Mensajes

Ir a la versión completa