从队列中的所有用户运行方法

use*_*076 5 c# asp.net

我的设置:用户有一个页面,他执行一些操作和数据转换.
我将这些操作存储在数据集中(在会话中).
然后,在按钮单击时,我需要执行一些更多转换并调用自定义数据库函数,该函数将每个数据表中的每一行插入到数据库中.我已经解决了所有这些问题并且效果非常好.

但是,现在,我需要做的是修改按钮单击事件不要立即运行,而是将该操作放入队列(这是所有用户的公共队列).因此,如果user1单击该按钮,则user2单击该按钮,然后我们需要获取user1数据集并在其上运行方法,并且仅在此之后获取user2数据集并在其上运行方法.所有的一个队列.

private void btnclick()
{
  DataSet ds = Session["test"] as DataSet;
  PerformFinalTransformation(ds);
  foreach (DataTable dt in ds.Tables)
  {
     foreach (DataRow dr in dt.Rows)
     {
        CallCustomSqlFunction(dr);
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免将数据集存储在数据库中,因为它们对于每个用户(表/列的数量)并不相同.我正在寻找关于如何在asp.net/c#中完成此任务的任何指示.(石英网是我应该考虑的吗?).我应该寻找什么概念?并行编程?还是asp.net队列?或者是其他东西?甚至无法启动,因为不知道该从什么开始.顺便说一句,我在我的应用程序中使用最新的DotNetNuke,如果这有所帮助.

Nar*_*dra -1

我认为你可以通过使用缓存来实现这一点。创建一个包含每个会话数据的队列并将该队列存储在缓存中。然后使用缓存来执行您的自定义数据库操作。当您使用队列时,它将是 FCFS。因此,只有在使用了用户1的数据之后,才会使用用户2的数据。