问题:正由另一进程使用,因此该进程无法访问该文件

问题描述

向Oracle数据库插入图片时,图片取绝对路径时不报错,当用OpenFileDialog取图片路径时报-->文件“C:DocumentsandSettingsAllUsersDocumentsMyPictures示例图片Waterlilies.jpg”正由另一进程使用,因此该进程无法访问该文件。代码如下请高手指出错误。1、按钮事件1(用OpenFileDialog取图片路径)privatevoidbuttonEdit1_Properties_ButtonClick(objectsender,e){stringFileName;opd_Pic.Filter="JPG(*.jpg)|*.jpg|BMP(*.bmp)|*.bmp";if(opd_Pic.ShowDialog()==DialogResult.OK){FileName=this.opd_Pic.FileName;if(FileName!=""){pte_See.Image=Image.FromFile(FileName);btne_Serch_Pic.Text=Path.GetFullPath(FileName);strPathName=btne_Serch_Pic.Text;变量取图片路径strPathName=strPathName.Replace("\","\");}}}2、按钮事件2(往数据库插入图片)privatevoidbtn_Add_Pic_Click(objectsender,EventArgse){if(btne_Serch_Pic.Text!=""){FrmLog.gConn.Open();m_Dt=newDataTable();stringm_Sql;try{//..先插入空的blob数据m_Sql="insertintot_khxx_c#(tp,kh_id)values(EMPTY_BLOB(),"+strKH_ID+")";OracleCommandmCmd=newOracleCommand(m_Sql,FrmLog.gConn);mCmd.ExecuteNonQuery();FileStreamfs=newFileStream(strPathName,FileMode.OpenOrCreate);fs.Close();fs=newFileStream(strPathName,FileMode.Open,FileAccess.Read);byte[]blob=newbyte[fs.Length];fs.Read(blob,0,blob.Length);fs.Close();//maxStudid=MaxStudid();SavePhoto(strKH_ID,blob,"kh_id","tp","t_khxx_c#");//插入图片}catch(Exceptionex){throwex;}finally{FrmLog.gConn.Close();}}}

解决方案

解决方案二:
图片是否打开?或者你前一次取图片的时候的进程未关闭?
解决方案三:
2楼,我是以流的方式取的,取之后已经关闭了。。。不知问题出在那里???请达人们指教,谢谢了
解决方案四:
为什么FileStream要实例化两次,第一次根本没作用;
解决方案五:
问题找到了:把FileStreamfs=newFileStream(strPathName,FileMode.OpenOrCreate);改为:FileStreamfs=newFileStream(strPathName,FileMode.OpenOrCreate,FileAccess.Read)即可,还有只需实例化一次即可。
解决方案六:
看着是关闭了!其实报哪个错就代表你没有把内存中的程序清楚干净!还有进程在站用着
解决方案七:
恭喜!
解决方案八:
该回复于2008-05-09 11:16:58被版主删除

时间: 2024-09-20 06:05:04

问题:正由另一进程使用,因此该进程无法访问该文件的相关文章

C#程序提示“正由另一进程使用,因此该进程无法访问该文件”的解决办法

  这篇文章主要介绍了C#程序提示"正由另一进程使用,因此该进程无法访问该文件"的解决办法,本文通过改写程序代码实现解决这个问题,需要的朋友可以参考下 问题描述: 图片加载后显示,然后进行删除操作时提示"--正由另一进程使用,因此该进程无法访问该文件.--" 解决办法: 原代码: 代码如下: iml.Images.Add(Image.FromFile(potopath + "" + fi.Name)); 改为: 代码如下: Image img =

Lock不住的BUG,神一般无解的BUG(XX正由另一进程使用,因此该进程无法访问该文件)

对于运行中的 秋色园 站点,偶尔的不经常,我都会做以下的几件开发者该常做的事: 1:查看网站的事件日志(看看有没有网站未发现的异常,有的话要处理).2:查看被捕获的异常日志(看看都是什么情况引发的,有的话要处理).3:查看数据库执行语句异常日志(看看都有啥情况).  今天早些时候,看了下日志,对于一条比较熟悉,但一直没怎么处理的日志,突然有了想处理掉它的想法: log:http://www.cyqdata.com/search/cnblogs/finger+print -------------

c#-正由另一进程使用,因此该进程无法访问该文件

问题描述 正由另一进程使用,因此该进程无法访问该文件 文件"C:UserszouDesktop综合设计医院就医自助查询系统JYZZCX.mdf"正由另一进程使用,因此该进程无法访问该文件 解决方案 先在任务管理器关闭程序,不行先停止sql server,再操作. 解决方案二: 其它程序正占用这个文件 解决方案三: 停止sql server服务 解决方案四: 任务管理器里面关闭相关进程 SQL Server Configuration Manager 里面停止sqlserver

asp.net 正由另一个进程,因此该进程无法访问此文件

问题描述 privatevoidDaochuEXCEl(DataTabledt){//根据模板文件创建副本stringfilePath=Server.MapPath("~/excel/Fuben.xls");File.Copy(Server.MapPath("~/excel/demo.xls"),filePath);//使用OleDb驱动程序连接到副本OleDbConnectionconn=newOleDbConnection("Provider=Micr

不关闭WINFORM下对数据库复制操作,出异常:正由另一进程使用,因此该进程无法访问此文件。

问题描述 我做了个WINFORM程序,里面有个DataGridView,可以获取SQL数据库的数据,并显示出来.现在想做个数据库备份功能,就是对数据库文件MDF和LDF两个文件进行拷贝操作,但只要WINFORM程序一开始运行,对这个文件的读取FileStreamfs=File.OpenRead(文件路径);这句话就会出IO异常:正由另一进程使用,因此该进程无法访问此文件.但只要关了WINFORM,就可以对他目录下的数据库文件随便复制粘贴了.麻烦大家帮忙想想办法,在不关闭WINFORM前提下对那两

Android利用LocalSocket实现Java端进程与C端进程之间的IPC

Android是建立在Linux之上的OS,在涉及到安全.网络协议.文件加密等功能时,往往需要通过C语言调用底层API来实现,而如何发出指令让C端执行我们想要的功能,并且在执行之后有返回结果呢,这就需要打通Java端进程和C端进程,使之能高效地通信.这样,C端进程用于实现功能,Java端进程负责UI.功能的触发及结果处理就可以了. 对于*nix系统来说,"一切皆为文件",Socket也不例外,Socket按照收发双方的媒介来说有三种类型:1,通过网络端口:2,通过文件系统:3,通过内存

linux系统编程之进程(一) 进程概述

一.什么是进程 从用户的角度来看进程是程序的一次执行过程. 从操作系统的核心来看,进程是操作系统分配的内存.CPU时间片等资源的基本单位. 进程是资源分配的最小单位. 每一个进程都有自己独立的地址空间与执行状态. 像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构成了一个进程. 二.进程数据结构 进程的静态描述:由三部分组成:PCB.有关程序段和该程序段对其进行操作的数据结构集. 进程控制块:用于描述进程情况及控制进程运行所需的全部信息. 代码段:是进程中能被进程调度程

在Linux系统中查看进程及杀死僵尸进程的方法

  ps 命令 ps 命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态. 进程 是否结束.进程有没有僵死.哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地. ps 命令及其参数 ps 命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设 备进行通信地,所以如果需要检测其情况,便可以运用 ps 命令了. 该命令语法格式如下: ps [选项] -e 显示所有进程,环境变量 -f 全格

Linux进程ID号--Linux进程的管理与调度(三)

进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum pid_type { PIDTYPE_PID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX }; 1 2 3 4 5 6 7 1 2 3 4 5 6 7 PID 内核唯一区分每个进程的标识 pid是 Linux 中在其命名空间中唯一标识进程而分配给它的一个号码,称做