Вы можете попробовать ReaderWriterLock
Пространство имен : System.Threading
.NET Framework предоставляет несколько потоковых примитивов блокировки.ReaderWriterLock является одним из них.
Класс ReaderWriterLock
используется для синхронизации доступа к ресурсу.В любой момент времени он допускает одновременный доступ на чтение к нескольким (по существу неограниченным) потокам или доступ на запись для одного потока.В ситуациях, когда ресурс читается часто, но обновляется нечасто, ReaderWriterLock
обеспечит намного лучшую пропускную способность, чем эксклюзивная блокировка монитора.
Примеры класса ReaderWriterLock
Отредактировано
public async Task FileWriteAsync(string text)
{
ReaderWriterLock locker = new ReaderWriterLock();
try
{
locker.AcquireWriterLock(int.MaxValue); //You might wanna change timeout value
string file = @"uid.txt";
using (FileStream sourceStream = new FileStream(file, FileMode.Append, FileAccess.Write, FileShare.None, bufferSize: 4096, useAsync: true))
using (StreamWriter f = new StreamWriter(sourceStream))
{
await f.WriteLineAsync(text);
}
}
finally
{
locker.ReleaseWriterLock();
}
}
public void ExFile(int line)
{
var uid = Regex.Match(txt_ListUID.Lines[line], @"c_user=(.*?);").Groups[1].ToString().Trim();
string text = uid + "|zxzxzx";
_ = FileWriteAsync(text)
}