Зм
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Worker worker = new Worker();
worker.WriteFile(Directory.GetCurrentDirectory() + @"\file.txt");
worker.ReadersFile(Directory.GetCurrentDirectory() + @"\file.txt");
worker.ReadersFile(Directory.GetCurrentDirectory() + @"\file.txt");
Console.ReadLine();
}
}
class Worker
{
ReaderWriterLockSlim reader = new ReaderWriterLockSlim();
public async void WriteFile(string path)
{
//ReaderWriterLockSlim reader = new ReaderWriterLockSlim();
reader.EnterWriteLock();
try
{
using (StreamWriter stream = File.AppendText(path))
{
for (int i = 0; i < int.MaxValue; i++)
{
await stream.WriteLineAsync(i.ToString());
}
}
}
finally
{
reader.ExitWriteLock();
}
}
public async void ReadersFile(string path)
{
reader.EnterReadLock();
try
{
using (StreamReader stream = new StreamReader(path))
{
while (true)
{
var text = await stream.ReadLineAsync();
Console.WriteLine(text);
}
}
}
finally
{
reader.ExitReadLock();
}
}
}
}