-1
私はそのようなコードを持っている:いくつかのタスクがどのようにソースを理解するために同じ代理人を呼び出すか?
public void RangeMissing(/*params*/)
{
Task.Factory.StartNew(() =>
{
....
bool needReceive = true;
while (needReceive) {
....
lock (lockObj) {
....
// calling third party dll method that calls MdrResponseInterpreter in its turn
}
}
}
}
public bool MdrResponseInterpreter(DNMessageDeliverer builder, DNFieldSet message)
{
.....
// i need to update needReceive here
needReceive = false;
}
いくつかのタスクを同時に実行することができます。あなたがそれらをロックする場合は、ここで
lock (lockObj) {
MdrResponseInterpreterメソッドの宣言は、それがインスタンスメソッドだことが明らかになったそうであるように私は同時に実行されませんMdrResponseInterpreter
複数のタスクを同時に実行したい。私は全体の仕事のほんの一部をロックします。 – javapowered
OKだから、MdrResponseInterpreterメソッドを持つオブジェクトにneedReceiveを配置してください。 – Bond
DNMessageDelivererにはMdrResponseInterpreterメソッドがありますが、いくつかのタスクでDNMessageDelivererを使用していますので、これは機能しません。私は他のタスクを更新します...しかし、私は "ロック(lockObj"これで動作するはずですが、私はちょうど 'DNMessageDeliverer'から' needReceive'を外部クラスにコピーする必要があります...しかし、私はそれが非常に良いアプローチである – javapowered