ASP.NET锁定线程的方法

2024-06-24

我正在使用 C# 开发 ASP.NET 表单 Web 应用程序。我有一种为客户创建新订单的方法。它看起来与此类似;

    private string CreateOrder(string userName) {
        // Fetch current order
        Order order = FetchOrder(userName);
        if (order.OrderId == 0) {
            // Has no order yet, create a new one
            order.OrderNumber = Utility.GenerateOrderNumber();
            order.Save();
        }
        return order;
    }

这里的问题是,两个请求(线程)中的 1 个客户可能会导致该方法被调用两次,而另一个线程也在该方法内。这可能会导致创建两个订单。

如何正确锁定此方法,以便每个客户一次只能由一个线程执行?

I tried;

    Mutex mutex = null;
    private string CreateOrder(string userName) {
        if (mutex == null) {
            mutex = new Mutex(true, userName);
        }
        mutex.WaitOne();
        // Code from above
        mutex.ReleaseMutex();
        mutex = null;
        return order;
    }

这可行,但在某些情况下它会挂在 WaitOne 上,我不知道为什么。是否有错误,或者我应该使用其他方法来锁定?

Thanks


Pass false for initiallyOwned in the mutex演员。如果您创建互斥体并最初拥有它,则需要调用ReleaseMutex again.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET锁定线程的方法 的相关文章

  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 命令中带空格的 Windows C 系统调用

    我无法使用名称和参数中的空格进行系统调用 例如 system c program files something example exe c my files example txt 我尝试过各种我知道的方法来逃避 但没有任何效果 我努力了
  • 如何将反射权限添加到IIS或将其添加到web.config?

    我在用着文件助手 http www filehelpers com 用于读取 csv 文件 一切都很好 直到我从 VS 开发服务器切换到 IIS 我得到了 PolicyException 无法获取所需的权限 我用谷歌搜索发现我需要添加反射许
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 第三方引用的 dll 未被复制来构建

    我有一个第三方 net dll 被我的 dll 类库项目 A 引用和使用 我的控制台应用程序项目 B 引用项目 A 我的问题是第三方 dll 没有被复制到控制台应用程序项目 B 的构建中 这里有什么问题呢 我的 dll 类库中引用的第三方
  • 回答“哪个方法调用了我?”在.NET 运行时?或者代码可以读取 CallStack 数据吗?

    假设有 methodS methodS 和 methodS methodC 在运行时被调用 是否可以知道 methodC 是从哪个方法调用的 我在想是否可以在运行时读取CallStack进行一些检查 如果是的话 我想应该没什么大不了的 有任
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 实体框架中的导航属性是什么

    我是实体框架的新手 当Visual Studio创建模型图时我们主要可以看到Entities Propertie和Navigation Properties这两个东西 那么这些Navigation Properties是什么 如何使用它们
  • 简单的喷射器将具体类型与生活方式结合起来

    我正在寻找一种可以使用指定的生活方式注册具体类型的方法 基本上如下所示 public void SomeFunction Type concrete Lifestyle lifestyle gt container Register con
  • 链接错误:xxx 已在 *****.LIB 中定义:: 究竟出了什么问题?

    Problem 我正在尝试使用一个名为DCMTK http dicom offis de dcmtk它使用了一些其他外部库 zlib libtiff libpng libxml2 libiconv 我已经从同一网站下载了这些外部库 LIB
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 为什么 ASP.Net MVC Range 属性采用类型?

    我只是想知道为什么范围验证属性可以采用类型和两个字符串作为参数 这是为了根据枚举或类似的东西验证字符串吗 另外 我想做的是找到一种简单的方法来验证必须出现在枚举中的 3 个字符的字符串 有什么建议吗 谢谢 亚历克斯 我确实发现你提到的 Ra
  • SwingWorker 和 Executor 的区别

    我正在使用 SwingWorker 在我正在制作的应用程序上执行一些重负载任务 虽然今天我遇到了 Executor 类和这个例子 Executors newCachedThreadPool execute new Runnable publ
  • MVC 4 中集合和单个值之间内容协商的差异?

    我正在利用新的 MVC4 ApiController 来构建搜索界面 像这样的东西 public IEnumerable
  • 在 C# 中为 ListBox 分配数据源时,如何从 ListBox 中删除所选项目?

    在 C 中为 ListBox 分配数据源时 如何从 ListBox 中删除所选项目 尝试删除时出现错误 设置 DataSource 属性后 无法修改项目集合 但是当我尝试从数据源 数据表 中删除项目时 它会抛出错误 因为 数据行不在当前行集
  • Task.Delay 到底是如何工作的?

    他们说 Task Delay 是一个异步 Thread Sleep 为了测试这一点 我写了下面的代码 我希望立即打印 One 然后 3 秒后将打印结果变量 15 2 秒后 将打印 Two 但似乎并非如此 一 不会立即打印 3 秒后打印 On
  • RC4 实现与 openssl 输出不匹配

    我的目标是在 C C 中实现 RC4 流密码 并确保它产生与使用时相同的输出openssl命令 按照伪代码维基百科 https en wikipedia org wiki RC4 该实现似乎有效 因为它可以加密和解密内容 但是 加密的输出与
  • Java中ThreadFactory的使用

    有人可以简要解释一下如何以及何时使用 ThreadFactory 吗 使用和不使用 ThreadFactory 的示例可能确实有助于理解差异 Thanks 这是一种可能的用法 假设您有一个ExecutorService它执行你的Runnab

随机推荐

  • 错误:使用替代方法写入重载方法值:

    我正在尝试读取固定宽度的文件并将其写入文本文件 下面是代码 输入文件布局字段的长度 4 10 3 5 3 1 1 5 7 094482018 07 10 022 14012 000 0 30000A 002290 059412018 07
  • CSS 中的下拉菜单?

    我正在寻找一种构建下拉菜单的方法 基本上 我有一个网站 底部有不同的按钮 其中一些应该有下拉菜单 以便鼠标悬停时在其上方显示一些按钮 哦 我想要一个不需要大型库甚至不需要 javascript 的解决方案 但这只是因为它更干净 使用 jav
  • 确定时间序列数据的 SOM(自组织映射)中的集群成员资格

    我也在做一个需要对时间序列数据进行聚类的项目 我正在使用在 MATLAB 中运行的 SOM 工具箱进行聚类 但遇到了以下问题 我们如何确定哪些数据属于哪个集群 SOM从数据集中随机选择数据样本 并为每个数据样本找到BMU 据我所知 SOM算
  • 带空格的 Elastic Search 通配符查询失败 7.11

    我在 7 11 版中将我的数据编入弹性搜索索引 这是我直接将文档添加到索引时得到的映射 properties name type text fields keyword type keyword ignore above 256 我还没有添
  • jQuery 承诺是否符合 Promises/A+

    我读过了本文 http thewayofcode wordpress com 2013 01 22 javascript promises and why jquery implementation is broken 这是基于著名的多梅尼
  • Eclipse 无法识别智能卡库

    从 Sun 的 jdk 1 8 迁移到 Openjdk12 后 Eclipse 无法识别 javax smartcardio 的整个库 例如 import javax smartcardio Card 会导致错误 Card cannot b
  • 如何有条件地使用 Perl 中的模块?

    我想在 Perl 中做这样的事情 Module1 ReportHashFile1 ReportHashFile1 pm Module2 ReportHashFile2 ReportHashFile2 pm if Condition1 use
  • 从 `.` `data.table` 导入,以便 lintr 识别它

    跑步时lintr https github com jimhester lintr在 R 函数上使用data table我收到以下警告 warning no visible global function definition for Di
  • 带有 dcast data.table 的宽格式[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想转换这样的表 set seed 1 mydata lt data frame ID rep 1 4 each 3 R rep
  • 将 IIFE 的公共成员分配给变量与返回对象有什么区别

    我最近查看了大量 JavaScript 代码 并且看到了使用分配 IIFE 的 公共 属性的两种不同方法 第一个是创建一个变量并将该变量分配给 IIFE 内部的属性 如下所示 var public1 function var foo Foo
  • 在 Microsoft Graph 中查找 Azure AD 架构扩展 AppId

    如果通过 Azure AD Connect 同步自定义属性 则会对 Azure AD 进行架构扩展 并且在 Azure AD 中创建一个关联的应用程序 其中包含DisplayName 租户架构扩展应用程序 不幸的是 这些扩展名都是唯一的 并
  • 使用 R 将逗号分隔的列表值转换为稀疏矩阵

    在新的数据结构中 每个segmentId应该变成一个列名 每个 personId 仍应有一行 id SegmentId 单元格是分段 ID 在逗号分隔列表中出现的次数的计数 下面的例子 按原样 我正在尝试以这种形式转换数据 PersonID
  • Android - 通过更新进度栏下载文件

    我的 Dropbox 帐户中有多个文件 我成功下载文件 但我想显示带有百分比的进度条 以便在下载所有文件时 进度条完成 我正在使用 AsyncTask 下载文件 这是我的代码 public void onPreExecute mDialog
  • 数据结构格式(YAML 或其他)的往返解析保留注释,用于编写配置

    我一直在多个应用程序中使用 YAML 作为配置文件格式 一切都很顺利 除了一件事 当我的程序需要在 YAML 配置文件中写入 修改配置变量时 它会通过加载和转储整个文件来破坏格式和注释 结构 嗯 实际上 YAML 还有另一个问题 大多数用户
  • 在 C# 中设置树节点的父节点的正确方法?

    我正在研究一棵定制树 每个节点 BindingNode 是我对它们的称呼 都包含一个 BindingNodeCollection 它实现收藏 http msdn microsoft com en us library 92t2ye13 as
  • Android sqlite 日志报告和 db.close()

    日志报告数据库或游标未关闭 我基本上有一个带有自定义表面视图的活动 并使用处理程序向活动报告 当我收到消息时 我会显示一个警报对话框并更新数据库 private Handler handler new Handler public void
  • QImage 转换为 QML

    我的应用程序通过网络接收 JPEG 实时流 每秒 16 帧 直播流应使用 QML 显示 接收部分是用C 编写的 所有UI都是用QML编写的 如何将图像数据输入 QML 窗口 我已经研究过如何显示 QImage 但还没有找到解决方案 实现 Q
  • 当恰好有一个选项非空时执行某项操作

    如果两个选项之一非空 我想计算一些东西 显然这可以通过模式匹配来完成 但是有更好的方法吗 o1 o2 match case Some o None gt Some compute o case None Some o gt Some com
  • project.parent.name 和parent.name 之间的区别以及在pom.xml 中使用finalName

    对线程的研究具有显式 FinalName 的 Maven 将无法正常工作 https stackoverflow com questions 40336878 maven with an explicit finalname wont wo
  • ASP.NET锁定线程的方法

    我正在使用 C 开发 ASP NET 表单 Web 应用程序 我有一种为客户创建新订单的方法 它看起来与此类似 private string CreateOrder string userName Fetch current order O