现在程序中有四个线程来进行逻辑的处理,处理结束向日志中记录处理结果。
但是不定期的出现错误!
"SystemLog.txt" 正由另一进程使用,因此该进程无法访问该文件。
方法一:
try
{
           //处理写错作
}
catch{}
但是不能满足需求,这样降低了程序的执行效率。
方法二:
        [DllImport("kernel32.dll")]
        public static extern IntPtr _lopen(string lpPathName, int iReadWrite);        [DllImport("kernel32.dll")]
        public static extern bool CloseHandle(IntPtr hObject);        public const int OF_READWRITE = 2;
        public const int OF_SHARE_DENY_NONE = 0x40;
        public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
        private void button2_Click(object sender, EventArgs e)
        {
            string vFileName = @"c:\a.ini";
            if (!File.Exists(vFileName))
            {
                MessageBox.Show("文件都不存在,你就不要拿来耍了");
                return;
            }
            IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
            if (vHandle == HFILE_ERROR)
            {
                MessageBox.Show("文件被占用!");
                return;
            }
            CloseHandle(vHandle);
            MessageBox.Show("没有被占用!");
        }
但是对于txt文件不好用,txt文件是没有句柄的。
方法三:
每个线程建一个日志文件。但是日志又太乱。不方便管理和查看。
所以:
       跪求!高人,来指点一下。谢谢了。