Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要创建一个队列,以便一次为一个人运行进程_C#_Asp.net_Asp.net Mvc_Arcgis - Fatal编程技术网

C# 需要创建一个队列,以便一次为一个人运行进程

C# 需要创建一个队列,以便一次为一个人运行进程,c#,asp.net,asp.net-mvc,arcgis,C#,Asp.net,Asp.net Mvc,Arcgis,我甚至不知道从哪里开始研究这个话题(比如要使用的关键词),所以我希望有人能帮我找到正确的方向 我有一个.NETMVC应用程序。在这个应用程序中,用户上载一个带有数据层的zip文件,该数据层用作应用程序调用的python脚本的输入。由于数据库游标的性质(如果有人熟悉的话,这是ArcGIS企业地理数据库),每次只有一个人可以运行python脚本,因为游标对数据库进行独占锁定(这是无法避免的)。两个人同时尝试使用此web应用程序的情况非常罕见,我需要将这些人放入队列中,以便第一个人完成python脚本

我甚至不知道从哪里开始研究这个话题(比如要使用的关键词),所以我希望有人能帮我找到正确的方向


我有一个.NETMVC应用程序。在这个应用程序中,用户上载一个带有数据层的zip文件,该数据层用作应用程序调用的python脚本的输入。由于数据库游标的性质(如果有人熟悉的话,这是ArcGIS企业地理数据库),每次只有一个人可以运行python脚本,因为游标对数据库进行独占锁定(这是无法避免的)。两个人同时尝试使用此web应用程序的情况非常罕见,我需要将这些人放入队列中,以便第一个人完成python脚本,然后从下一个人的数据集开始。我从哪里开始,或者你能给我什么词来开始制定关于这个主题的一些搜索查询?

也许会有更多特定于技术的解决方案,但从我的第一个观点来看,你可以使用优先级队列样式处理

它可以像创建一个表和排队(插入)新的请求一样简单,然后按需处理(出列)。或者,使用更高级别的框架,如

所以,每次新的zip文件出现时

  • 在存储库中上载
  • 在队列中插入新记录
  • 从队列中获取第一项
  • 过程
若第二个人上传了新文件,你们会检查队列表,会有标志最后一项正在被处理,然后你们可以让客户端知道,脚本已经排队并将被处理


显然,生成客户机的唯一id是值得的,如果同时有多个上载,那么您将不会混合优先级和脚本。

静态/单例和一些锁/互斥将是限制单个实例可用性的方法之一,而不是队列方法。如果您确实需要对请求排队并一次处理一个请求,您可以将其与SignalR结合使用。希望这能有所帮助。谢谢,我正在查看队列类,因为实际上没有优先级顺序,只有先上传内容的人才能首先得到处理。不过,我很难想象多个用户是如何从一个队列中排队的。当有人上传数据时,我可以在我的应用程序中实例化一个队列类,将他们的东西添加到队列中,但如果第二个用户出现并上传数据,我认为它只会实例化另一个单独的队列类。这就是您提到的“队列表”的用途吗?您需要了解如何实现单例,或者您需要在SQL server等的持久性存储中的某个位置创建队列存储并使用它。如果您对这些概念不熟悉,我强烈建议您获得更高级开发人员的支持,或者在深入研究之前花时间学习这些概念。无论如何,你已经走到了一半,不应该花太长时间去抓住它们。