如何 queue 多次调用(通过 AJAX)FileStream / StreamWriter?

How to queue multiple calls (via AJAX) to FileStream / StreamWriter?

抱歉,如果标题不太正确,我不能 100% 确定我在找什么。

我有一些代码执行以下操作:

public static ProcessData()
{
    AddNewData()
    GetAllData()
    BuildTSV();
    Send();
}

这是一个 MVC 网络应用程序,ProcessData 是一个 Ajax 调用,传递一些表单数据。 AddNewData 写入数据库,这是对执行基本 INSERT 的存储过程的简单调用。 GetAllData 查询数据库,它是单个 table 上的简单 SELECT 语句。 BuildTSV 使用数据库数据构造一个文件,然后我们将它发送到远程服务器。

如果连续足够快地点击 BuildTSV,我会遇到文件锁定问题(不是数据库)。 BuildTSV 正在使用一个简单的 StreamWriter。

我无法更改此工作流程,我想以某种方式合并 AddNewData() 调用,然后仅在它们全部完成后才继续。

线程? Queues?阻塞集合?等待文件是否被锁定并重试?

这对我来说是全新的,并且努力理解 1001 种不同的方法。

最后我创建了一个小服务来处理这个问题。

我会查询数据库并跟踪 table 中的行数。如果这是递增的,我会 select 所有数据并将其处理成一个平面文件,然后发送。这每隔几分钟运行一次,解决了我所有的问题。

我遵循了 this as a starting 点,基本上放弃了我现有的负责将数据拉入平面文件然后发送的代码,以及一些添加的日志记录和服务停止时的电子邮件通知。