读书人

用两个streamReader同时读一个文件 会

发布时间: 2011-12-22 23:36:25 作者: rapoo

用两个streamReader同时读一个文件 会产生什么问题么?例如死锁,
在多线程情况下,用两个streamReader同时读一个文件 会产生什么问题么?例如死锁, 还是不会影响?

thread th1=new thread(new threadStart(do1));
thread th2=new thread(new threadStart(do2));
do1.start();do2.start();


void do1()
{
StreamReader sr1=new StreamReader(FileName,System.Text.Encoding.UTF8);
sr1.BaseStream.Seek(0,SeekOrigin.Begin);
while(sr1.Peek()> -1)
{
sr1.ReadLine();
count++;
}
sr1.Close();



}

void do2()
{
StreamReader sr1=new StreamReader(FileName,System.Text.Encoding.UTF8);
sr1.BaseStream.Seek(0,SeekOrigin.Begin);
while(sr1.Peek()> -1)
{
sr1.ReadLine();
count++;
}
sr1.Close();



}



[解决办法]
把读取文件的部分写成一个函数,使用lock锁定:

lock(this)
{
System.IO.StreamReader red = new StreamReader( "file.txt ");
while (red.Read())
{
....
}
red.Close();
}
[解决办法]
两个都是只读打开已经不会有问题吧,感觉.
[解决办法]
//Monitor.Enter(this);
//Monitor.Pulse(this);
在这里处理可能冲突数据
//Monitor.Exit(this);

必须预防冲突

读书人网 >C#

热点推荐