该进程无法访问该文件,因为当我计算时,其他进程正在使用该文件

时间:2015-01-13 11:14:05

标签: c# .net winforms filesystemwatcher

我构建了一个文件系统观察器解决方案,并且,我会检索对日志文件所做的更改,只提取添加的行,但我不能在此,因为我总是错误,该进程无法访问文件,因为它正被另一个进程使用。 我的代码是这个用于检索添加的行是这样的:

using (var file = new FileStream(FileName,
                                        FileMode.Open,
                                        FileAccess.Read,
                                        FileShare.Read))

        using (var sr = new StreamReader(file))
        {
                try
                {
                    Thread thread = new Thread(delegate()
                    {
                        listBox1.Invoke((MethodInvoker)(() =>
                        {

                            listBox1.Items.Clear();//this is the listbox that list every added line and that I clear before of to be filled
                            string[] lines = File.ReadLines(fileName)
                                                 .Skip(LinecountStartPositionBUFF)
                                                 .Take(LinecountEndPosition - LinecountStartPositionBUFF)
                                                 .ToArray();
                            listBox1.Items.AddRange(lines);

                        }));
                    });

                    thread.Start();

                    while (thread.IsAlive)
                        Application.DoEvents();
                }

                catch
                { }

            return sr.ReadLine();
        }

1 个答案:

答案 0 :(得分:2)

您无法在FileStream中打开该文件,稍后可以通过File.ReadLines访问该文件,因为FileStream会锁定该文件。我会改变完整的代码。