流当前正由上一个操作使用



我正在处理以下问题,无法解决

https://andrew.thomas.net.nz/c%23/2020/08/30/Beware-使用文件流WriteLineAsync方法/的

我无法解决它,因为等待不能包含在锁中,并且不想使用异步锁实现,所以请寻找您的想法来帮助我用简单的解决方案解决这个问题。

简短回答,如果您不想使用任何可能无法避免问题的信号或锁。

为了避免这种情况,您需要控制线程访问资源,否则,您可能会遇到竞争条件问题。

如果你不想使用lock,有另一种方法可以同时控制线程访问资源SemaphoreSlim

我们可以设置值CCD_ 2&maxCount乘以SemaphoreSlim的1,表示当您使用多个线程时,只有一个线程可以使用资源,其他线程将同时等待信号。

private static SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1,1);

await semaphoreSlim.WaitAsync();
//your want to avoid race-condition code zone.
semaphoreSlim.Release();

我认为您无法使用SemaphoreSlim进行scape。这是因为流的抽象是顺序访问。为什么要在非顺序访问的文件中写入行?

相关内容

  • 没有找到相关文章

最新更新