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等的持久性存储中的某个位置创建队列存储并使用它。如果您对这些概念不熟悉,我强烈建议您获得更高级开发人员的支持,或者在深入研究之前花时间学习这些概念。无论如何,你已经走到了一半,不应该花太长时间去抓住它们。