正在写一个手指画图的程序
C# +
WPF
其中有一部分是加载外部某PNG文件,放入BitmapImage,再作为Image的Source显示在Canvas上
画了几笔之后,再存回这个PNG文件
================问题=================
BitmapImage这个对象没有Dispose方法,始终无法释放,因此在之后FileStream试图写这个文件时出现“正由另一进程使用,因此该进程无法访问该文件”的问题
BitmapImage
bitmap = new
BitmapImage();
bitmap.BeginInit();
bitmap.UriSource
= new Uri(filePath);
bitmap.EndInit();
Image
currentImage .Source =
bitmap;
canvas.Children.Add(currentImage);
//
Do some modification
private void ExportToPng( string path,
Canvas surface)
{
if(path ==
null)
return;
........
using(FileStream
outStream = new FileStream(path,
FileMode.Create)
........
}
尝试了很多方法,包括在using
FileStream之前加lock、在new
FileStream的参数中加入FileAccess.ReadWrite、FileShare.ReadWrite、以及将bitmap.Clone作为currentImage的Source,都不成功
===============解决方法=============
最后发现初始化BitmapImage可以通过byte[]进行,于是只能通过将png文件读成byte[],再进行BitmapImage的初始化,就没有问题了
//
Read byte[] from png file
BinaryReader binReader = new
BinaryReader(File.Open(filePath, FileMode.Open));
FileInfo
fileInfo = new FileInfor(filePath);
byte[] bytes =
binReader.ReadBytes((int)fileInfo.Length);
binReader.Close();
//
Init bitmap
BitmapImage bitmap = new
BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource
= new
MemoryStream(bytes);
bitmap.EndInit();
为了更加保险,最后使用的方法中通过ref参数,将需要init的bitmap作为参数传入,方法内部生成一个temp的BitmapImage,完成Init后,bitmap
= temp.Clone()
【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&解决方法
时间: 2024-11-07 23:56:09
【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&解决方法的相关文章
“服务器正忙,请稍后再试”常见原因及解决方法?
在网站运维过程中,常会遇到访客反映“服务器正忙,请稍后再试”错误提示,实际上不论是web服务器,游戏服务器,邮件服务器,又或者是软件服务器等,都会遇到诸如“服务器正忙,请稍后再试”类的问题. 游戏服务器正忙 这里就详细列举“服务器正忙,请稍后再试”错误现象常见的原因及相应的解决方法: 1.本地网络配置问题: 本地网络配置问题,包括本地dns服务器配置,浏览器配置等,如果配置不当,都常会出现“服务器正忙,请稍后再试”的错误提示. 解决方法是:根据访问服务器的情况,正确配置本地dns及浏览器相关
c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件
log20170317.txt是一个自动任务生成log4net的日志文件,自动任务一直在执行. 今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流. 1. FileStream fs = File.OpenRead(url); StreamReader sr = new StreamReader((System.IO.Stream)fs, System.Text.Encoding.Default); 错误提示:文件“D:\Log\log20170317.txt”正由另一进程使用,因此该
FileStram文件正由另一进程使用,该进程无法访问该文件,解决方法
异常提示: “文件正由另一进程使用,该进程无法访问该文件”. 打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示. 通常造成该错误的原因是构造System.IO.FileStream时参数设置有问题. 一般习惯直接使用: FileStream fs = new FileStream(fileName, FileMode.Open) 这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,
文件正由另一进程使用,因此该进程无法访问此文件
public void WriteLog(string logStr) { lock (this) { string path = @"D:\log\payment\"; string file = DateTime.Now.ToString("yyyy-MM-dd") + "paymentlog.ini"; DirectoryInfo d = new DirectoryInfo(path); if (!d.Exists) { Directory
关于文件保存/关闭时报错:文件正由另一进程使用,因此该进程无法访问此文件。
起因:最近给Unity上的游戏写关于存档的脚本,使用了xml.然后发现每次文件保存时,也就是调用XmlDocument.Save()对象方法的时候就会报错说该文件路径分享异常啥的我也不记得了.然后搞了半天,无果.猜测原因可能是因为文件被占用的原因,遂简化代码在新的解决方案里重现异常. 如图: 运行报错,第33行,"文件正由另一进程使用,因此该进程无法访问此文件." 网上找答案,这个异常网上也有答案,虽然他们的代码不是xml相关的但是错误原理相同. 错误原因是:文件正在被流调用.要想保存
文件正由另一进程使用,该进程无法访问该文件,解决方法
异常提示: “文件正由另一进程使用,该进程无法访问该文件”. 打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示. 通常造成该错误的原因是构造System.IO.FileStream时参数设置有问题. 一般习惯直接使用: FileStream fs = new FileStream(fileName, FileMode.Open) 这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,
文件“bin\Debug\WindowsFormsApplication2.exe”正由另一进程使用,因此该进程无法访问该文件。
http://zhidao.baidu.com/question/221394579.html?qbl=relate_question_2&word=%BE%AF%B8%E6%094%09%CE%B4%C4%DC%BD%AB%22obj%5Cx86%5CDebug%5C%B5%E7%D3%B0%BC%C7%C2%BC%B9%DC%C0%ED%CF%B5%CD%B3.exe%22%B8%B4%D6%C6%B5%BD%22bin%5CDebug%5C%B5%E7%D3%B0%BC%C7很明显这是由于
UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数
lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序).对于这种信号的系统默认动作是忽略它. 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函数来获取终止子进程的终止状态.那么,有几个问题我们这里需要详细的学习一下. 1. 父进程一定能够获取到子进程的终止状态吗?如果子进程在父进程调用 wait 函数前就终止了,怎么办? 2. 如果父进程没有获
【转】iis解决应用程序池**提供服务的进程意外终止进程ID是**。进程退出代码是'0x80'
转自:http://blog.sina.com.cn/s/blog_56a68d5501013xdd.html 我们公司旗下的红黑互联会遇到这种问题 事件类型: 警告事件来源: W3SVC事件种类: 无事件 ID: 1009日期: 事件: XX:XX:XX用户: XX计算机: XXXX描述:为应用程序池 XXXXX 提供服务的进程意外终止.进程 ID 是 XXXX.进程退出代码是 0x80.有关更多信息,请参阅在 asp">http://go.microsoft.com/fwlink/ev