私が持っている場合:
lock(myLockObject)
{
mySharedBuffer.Modfiy();
something.BeginDoStuff(new Action(delegate()
{
mySharedBuffer.Modify();
}));
}
また、BeginDoStuff() に提供されたコールバックは別のスレッドでコールバックされます - コールバックが最終的に実行されるときにロックが保持/再取得されますか? (ロックが失われたと推測し、再度ロックする必要がありますが、そのように記載されたドキュメントが見つかりません)