そこは、C#でマルチコマンド(グループ)をサポートするコマンドパターンの拡張実装は次のとおりです。私は同じを共有していますは、どのようにC#でマルチコマンドパターンの異なるスレッドと同じコンテキストを共有するには?
groups.Execute();
:
今var ctx= //the context object I am sharing...
var commandGroup1 = new MultiItemCommand(ctx, new List<ICommand>
{
new Command1(ctx),
new Command2(ctx)
});
var commandGroup2 = new MultiItemCommand(ctx, new List<ICommand>
{
new Command3(ctx),
new Command4(ctx)
});
var groups = new MultiCommand(new List<ICommand>
{
commandGroup1 ,
commandGroup2
}, null);
、実行は次のようですコンテキスト(ctx)オブジェクト。
ウェブアプリケーションの実行計画は、異なるスレッドで commandGroup1
グループとcommandGroup2
グループを分ける必要があります。具体的には、commandGroup2
は、メインスレッドで新しいスレッドとcommandGroup1
に実行されます。
実行が今のようになります。
//In Main Thread
commandGroup1.Execute();
//In the new Thread
commandGroup2.Execute();
新しいスレッドからcommandGroup1
をロールバックすることができるように、どのように私はスレッド安全は、同じcontext object (ctx)
を共有することができますか?
は十分t.Start(ctx);
または私はロックか何かを使用しなければならないのですか?
いくつかのコードの実装例では、here
それはそのCTXがコマンドで使用されている方法によって異なります。同時に使用する場合(つまり、両方のスレッドが同時にアクセスできる場合)、たとえば、両方のコマンドで変数ctxをロックすることができます。一般的に質問はあまり明確ではありません。多元コマンドをどのように使用するかの具体的な例を提示すると、おそらくより良いでしょう。 – Evk
あなたは並行バッグを調べましたか? –