想要写入文件,但可能一次有多个编写器,需要锁定

pub*_*tic 6 .net c# asp.net locking

在asp.net Web应用程序中,我想写入一个文件.此函数将首先从数据库中获取数据,然后写出平面文件.

我该怎么做才能确保只发生一次写操作,并且一旦写入发生,其他可能想要写入文件的线程就不会发生写入.

我希望只有在15分钟内没有完成这个写操作.

我知道有一个锁定关键字,所以我应该将所有内容包装在锁中,然后检查它是否在15分钟或更长时间内更新,反之亦然?

更新

工作流程:

由于这是一个Web应用程序,因此多个实例将是查看特定网页的人.我可以使用内置缓存系统,但如果asp.net回收,重建缓存将是昂贵的,所以我只想把它写出来一个平面文件.我的另一个选择只是创建一个Windows服务,但这是更多的工作来管理我想要的.

Gis*_*shu 2

同步您的编写代码以锁定共享对象,以便只有一个线程进入该块。其他人则等待当前的人退出。

lock(this)
{
  // perform the write.
}
Run Code Online (Sandbox Code Playgroud)

更新:我假设您有一个共享对象。如果这些是同一台机器上的不同进程,则您需要诸如命名互斥体之类的东西。看这里的例子