(私は .NET CLR に興味があります)
別のスレッドが元のオブジェクトでメソッドを実行しているときに、あるスレッドが変数が参照するオブジェクトを変更すると、正確には何が起こるでしょうか?
たとえば、型に typeFoo
の変数 'Bar' があり、クラス レベルの状態がないBar
としBar
ます (少なくとも今のところ、このシナリオは単純にしたいと思います)。
// Thread 1
foo.Bar = new Bar();
foo.Bar.SomeMethod();
とりあえず、これが実行を終える前に…
// Thread 2
foo.Bar = new Bar();
スレッド 1 で実行されている (だった?) メソッドはどうなりますか? 完了する必要があるものはすべてスタック上にありますか?
スレッド2が代わりにこれを行うと、状況は変わりますか?
foo.Bar = null;