我有一个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();
    }

07-26 02:28