我正在尝试实现基于文件的自动增量标识值(存储在TXT文件中的int值),我正在尝试提出处理并发问题的最佳方法.此标识将用于我的内容的唯一ID.当保存新内容时,该文件被打开,值被读取,递增,新内容被保存,并且递增的值被写回文件(无论我们存储下一个可用ID还是最后发布的ID并不重要).在完成此过程的同时,可能会出现另一个过程并尝试保存新内容.上一个进程使用FileShare.None打开文件,因此在第一个进程释放文件之前,其他任何进程都无法读取该文件.尽管发生这种情况的可能性微乎其微,但仍可能发生.
现在,当发生这种情况时,我们有两个选择:
>等待文件变为可用 –
Emulate waiting on File.Open in C# when file is locked
我们这里谈的是毫秒,所以我想这不会是一个问题,只要发生奇怪的事情并且文件永远不可用,那么这个解决方案会导致无限循环,所以不是理想的解决方案
>实现某种队列并对队列中的文件运行所有操作.我的用户体验要求是,在保存/修改文件时,用户永远不应该被告知异常或出现问题 – 稍后当操作在队列上失败时,他会通过一个非常友好的用户界面获得有关它们的信息.
在编写本文时,解决方案应该在ASP.NET MVC应用程序中运行(同步和异步通过AJAX),但是,如果可能,它应该使用也可以在Silverlight或Windows Forms或WPF应用程序中工作的概念.
关于这两个选项,您认为哪个选项更好,而第二个选项可以实现哪些可能的技术?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。