私はユニークな商品しか持っていないショッピングウェブサイトで働いています。したがって、ユーザーは同じ商品を同時にカートに表示して追加することができますが、注文すると誰でも最初に配置するので、カートに同じアイテムが追加されます。特定のコードをロックする方法C#
しかし、私は、呼び出されたときに私のプレースオーダーコードがロックされ、他のすべてのリクエストが完了しなくなるまで待ち行列で待たなければならないことをどのように保証するのでしょうか。 私はlockキーワードについては読んだがあまり考えていない。どんな助けもありがとう。
ステップ1:
以下は私のコードのためにいくつかの手順を実行している、その項目が利用可能であるか確認するためにサードパーティのサービスを呼び出すことがない ステップ2:項目が利用可能な場合は、呼び出すことによって、それを買うことサードパーティのサービス。 ステップ3:正常に購入された場合は、フラグなどでデータベースを更新してください。
コードのサンプルを提供してもよろしいですか? –
基本的な設計上の欠陥があるようです。リクエストはお互いに干渉してはならないので、動作させるために何らかのロックを行う必要はありません。あなたのコードを見れば、何が間違っているのか理解するのに役立ちます。 – itsme86
これは 'ロック'のためのものではありません。あなたが人のカートに入っている間に在庫を一時的に在庫から取り除く方法が必要です(私があなたの質問を正しく理解していれば)。私が考えることができる最善の方法は、カートをデータベースに入れることです。あなたは常にあなたの潜在的な株式が何であるかを確認するためにカートに照会することができます。 –