AppDomainの強制アンロードができない

開発中のフレームワークにはAppDomain経由でアプリケーションを起動するランチャ機能があり、その中では他のAppDomainからアセンブリを起動する為にAppDomain越えでメソッドを起動している。

appDomain.DoCallBack(new CrossAppDomainDelegate(ExecuteAssembly));

等のように書いてExecuteAssemblyメソッドでは

public void ExecuteAssembly()
{
  AppDomain.CurrentDomain.ExecuteAssembly(assemblyFileName, evidence);
}

等としている。
CrossAppDomainDelegate経由で起動されたアセンブリ自らが終了する場合、又は操作者がメインフォームを閉じるなりして終了される場合は全く問題は無いんだけど、起動した側つまりDoCallBackで呼びだした側を親AppDomainとして親AppDomainが終了する場合には、起動した他のドメインを全て強制終了させたいので以下のメソッドを使っている。

AppDomain.Unload(targetDomain);

まだ生きているAppDomainの数分このメソッドを呼んでやれば問題無いだろうと思っていたのだけれど、何かのタイミングでUnloadできずに居座ってしまうAppDomainがあったりする。
いろいろと試してみると、AppDomain経由で起動したアプリケーションがバックグラウンドでスレッドを生成するとUnloadに失敗する事が多いことが判明した。(100%じゃない)
AppDomainのUnloadには時間がかかる、といろいろな所で書いているしスレッドが消えるまで放っておけば良いとも言えるけど開発するアプリケーションにはインスタンス数の制限があり、消えかけのAppDomainが残っていると間違いなくインスタンス数のカウントを間違える。何か良い方法が無いかなと暫く考えているんだけど今のところ打開策無し....
イベントかデリゲートを用意しておいて親から子のAppDomainにシグナルを送って、自発的にUnload(終了)できるようにした方が良いのかなぁ。
.NET(C#)を始めてからライブラリィを書いて半年になるんだけど未だに解決策が見つからない。単に勉強不足なだけかな。