我有一个IO.Stream,我需要先编写然后再读取。由于响应直接与发送的数据相关,因此我需要避免并行执行此方法,以确保其完整性。现在,我也希望这种方法可以使用,甚至可以吗?我将流包装到一个同步流中,这将防止在读取和写入过程中发生干扰,但不能保证保持正确的写入和读取操作顺序。我有点不知道如何实现它,因为如果我想使用异步等待方法,就无法锁定流。
最佳答案
您可以使用SemaphoreSlim.WaitAsync
。
static SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1,1);
//Asynchronously wait to enter the Semaphore. If no-one has been granted access to the Semaphore, code execution will proceed, otherwise this thread waits here until the semaphore is released
await semaphoreSlim.WaitAsync();
try
{
await Task.Delay(1000);
}
finally
{
semaphoreSlim.Release();
}