使用ASP.NET暂时锁定文件夹

时间:2009-06-29 19:05:27

标签: c# .net indexing search

我正在开发网站的索引/搜索功能。索引每6小时运行一次,大约需要2分钟。

在这2分钟内禁止从索引文件夹读取的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

为什么不在另一个(也许是临时的)目录中构建索引,然后在索引器完成时将新索引复制到旧索引上?然后,您将索引无效的时间缩短到文件复制所需的时间。

编辑:介绍了

下面的锁定策略

如果不了解使用索引的进程如何使用它,就很难建议一个好的锁定策略。如果快速获取,读取和释放索引,您可以对索引目录进行独占控制,则可以在索引目录(类似indexlock.donotuse)中编写一个锁定文件。开始索引副本,并在完成后将其删除。如果对索引的引用持续很长时间,那么lockfile方法仍然可以工作,但你需要进行更复杂的协调。

您还可以在索引本身中存储索引版本控制元数据,并将更新后的索引放在旧索引旁边。然后,当你从索引中读取时,在使用你所获得的索引之前检查是否存在较新的索引。