C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 108 を表示中)
■64188 / )  Re[16]: AppDomainのアンロードタイミング
□投稿者/ Azulean (65回)-(2012/11/12(Mon) 22:24:43)
No64183 (SS さん) に返信
> と言うのも、最初に Azulean さんが仰られていた
>  「それが安全かどうかまではわかりません、すみません。」
> の事があるからです。

後述しますが、安全かどうかは作る人が保障しなければならない、実際のコードとつきあわせてタイミングを保障しなければならないので、安全かどうかは第三者にはわかりません。


> やはりベストなのは
>  "AppDomainがアンロード可能な状態になった事"を感知出来る事
> なんだと思います。
> その機能が 元々 Framework に用意されていない?という事は、「出来ない」,「やっていはいけない」
> と言うことなんでしょうかねぇ…。

環境やクラスライブラリとしては、そのタイミングを規定しづらいので「用意しない」というスタンスなのではないかと思います。
作っている人からすれば自明なのかもしれませんが、残っているオブジェクトがいつ使われるのか、イベントがいつ起きるのかは、実行環境としては把握しづらいと思います。動いているコードがなくなったとしても再利用されないとも限らないわけですから、アンロードできるタイミングというのは一律に置けないと思います。
従って、確実にコードが終わったと思われる安全なタイミングをプログラマーが規定し、そのタイミングで AppDomain を Unload するしかないと思います。
たとえば、Synchronaization.Context.Post で次のメッセージループのタイミングでコードを呼び出させておいて、そこからタイマーで 10 秒後にアンロードすれば安心とか、自分でタイミングを図る必要があるかと。
返信 編集キー/


管理者用

- Child Tree -