「Lock()」を使用して重要なセクションをロックしたい一方で、ボタンをクリックするだけでスレッドを一時停止できるようにしたい (「一時停止」機能を使用すべきではないことはわかっています。しかし、私は本当に選択の余地がありません)。
他のスレッドがこのクリティカル セクションに入る可能性があります。デッドロックを防ぐにはどうすればよいですか?
「Suspend」関数が (「Abort()」関数のように) 例外をスローしていた場合、問題はありませんでした。「最終的に」ステートメントでモニターが解放されました...
例えば:
static List<Thread> threadList = new List<Thread>();
public static List<Thread> ThreadList
{
get { lock (_locker) { return SaveLists.threadList; } }
set { lock (_locker) { SaveLists.threadList = value; } }
}
オブジェクトをロックしたスレッドを一時停止すると、その後、別のスレッドがリストを設定/取得する必要があります => DEADLOCK.