filestream fileshare访问由2个进程同时读写

时间:2012-05-16 00:05:03

标签: c# asp.net

我有一个原始网站,其中aspx webform和socket服务器访问存储数据的平面文件。 socketserver将访问要写入的相同文件,aspx c#代码可以访问这些文件进行读取。我认为锁定文件可能存在问题。我认为服务器快速写入文件并释放文件锁定是更高优先级。 webform应该能够在不中断服务器写入过程的情况下进行读取。做这个的最好方式是什么?是使用使用streamwriter吗?

服务器使用此调用,仅在写入文件时共享文件以进行读取。

                    if (!File.Exists(filepath))
                    {
                        using (FileStream fileStream = new FileStream(filepath, FileMode.CreateNew, FileAccess.Write, FileShare.Read))
                        {
                            using (TextWriter writer = new StreamWriter(fileStream))
                            {
                                writer.WriteLine(data);
                                m_clientSocket.Send(BitConverter.GetBytes(data.Length));
                            }
                        }
                    }
                    else
                    {
                        using (FileStream fileStream = new FileStream(filepath, FileMode.Append, FileAccess.Write, FileShare.Read))
                        {
                            using (TextWriter writer = new StreamWriter(fileStream))
                            {
                                writer.WriteLine(data);
                                m_clientSocket.Send(BitConverter.GetBytes(data.Length));
                            }
                        }
                    }

使用以下命令

读取webform
        using (FileStream stream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            using (TextReader reader = new StreamReader(stream))
            {
                //string fileContents = tr.ReadToEnd();
                while ((line = reader.ReadLine()) != null)
                {
                    if (!string.IsNullOrEmpty(line))
                    {
                        lines.Add(line);
                    }
                }
            }
        }

我希望这可以在不必锁定文件和管理访问权限的情况下工作,我不知道该怎么做。我希望能够让服务器随时锁定文件以便写入,但也允许aspx网页c#代码读取相同的文件。

感谢任何帮助。

0 个答案:

没有答案