多线程写文件异常(正由另一进程使用,因此该进程无法访问该文件)的解决方法
2010-04-29 15:06
886 查看
正由另一进程使用,因此该进程无法访问该文件。
在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
这是由于多线程出现互斥,一个文件没关闭,继续写入数据流而产生的异常。
经过lock加锁没能解决问题,后来觉得用互斥量比较不错,经测试问题解决,异常通知没有了。
在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
这是由于多线程出现互斥,一个文件没关闭,继续写入数据流而产生的异常。
经过lock加锁没能解决问题,后来觉得用互斥量比较不错,经测试问题解决,异常通知没有了。
namespace filewrite { public partial class Form1 : Form { Mutex mtx = new Mutex(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < 30; i++) { Thread checkclientOnline = new Thread(checkOnline); checkclientOnline.Start(); } } //写入日志 public static void WriteToLog1(string Title) { if (Title == "") return; string FileName = Application.StartupPath; //Object thisLock = new Object(); { FileStream fs = new FileStream(FileName + "//tiplog.txt", FileMode.Append, FileAccess.Write, FileShare.Write); Byte[] bTitle = UnicodeToMBCS(Title); fs.Write(bTitle, 0, bTitle.Length); fs.Close(); } } public static Byte[] UnicodeToMBCS(String src) { Encoding enc = Encoding.GetEncoding(936); ////Dont use codepage 52936, but 54936 or 936 int len = src.Length; Byte[] tmpb = new Byte[len * 2]; tmpb = enc.GetBytes(src); //string tmphead=tmpb.Length.ToString(); //tmphead=tmphead.PadLeft(4,'0'); //tmpb=enc.GetBytes(tmphead+src); return tmpb; } void checkOnline() { while (true) { try { mtx.WaitOne(); //Write file here WriteToLog1("hhh"); mtx.ReleaseMutex(); ; }catch(Exception e) { Console.WriteLine(e.ToString()); } } } } }
相关文章推荐
- 多线程写文件异常(正由另一进程使用,因此该进程无法访问该文件)的解决方法
- 多线程写文件异常(正由另一进程使用,因此该进程无法访问该文件)的解决方法
- C#中文件正由另一进程使用,因此该进程无法访问该文件解决方法
- Image.FromFile方法会锁住文件的解决方法(文件正由另一进程使用,因此该进程无法访问该文件)
- 用流的方法解决“文件正由另一进程使用,因此该进程无法访问该文件” 的问题 FileStream
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- Image.FromFile方法会锁住文件的解决方法(文件正由另一进程使用,因此该进程无法访问该文件)
- 【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&解决方法
- 对于image.fromfile方法在使用时,遇到的“正由另一进程使用,因此该进程无法访问此文件”解决方法
- iis提示“另一个进程正在使用此文件,无法访问”解决方法
- “另一个程序正在使用此文件,进程无法访问”的解决方法
- 对文件操作(复制/移动/删除)时 报“文件正由另一进程使用,因此该进程无法访问此文件”的解决办法
- FileShare文件读写锁解决“文件XXX正由另一进程使用,因此该进程无法访问此文件”
- 未能解决:未能加载文件或程序集“XXXXXXXXX”或它的某一个依赖项。另一个程序正在使用此文件,进程无法访问。 (异常来自 HRESULT:0x8007002
- FileStram文件正由另一进程使用,该进程无法访问该文件,解决方法
- VS 编译提示 无法将“obj\Debug\*.*”复制到“bin\Debug\*.*”,文件...正在由另一个进程使用,因此该进程无法访问此文件 解决办法
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法
- FileShare文件读写锁解决“文件XXX正由另一进程使用,因此该进程无法访问此文件”(转)
- 文件正由另一进程使用,该进程无法访问该文件,解决方法
- C#操作Office文件,成功释放,但读取文件时提示"文件***正由另一进程使用,因此该进程无法访问此文件"的解决办法