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

わんくま同盟

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

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


■91538 / )  Re[9]: メモリリークに関して
□投稿者/ kiku (111回)-(2019/07/04(Thu) 10:46:45)
No91537 (魔界の仮面弁士 さん) に返信
> .NET Framework の場合、Control.Font プロパティは Ambient なので、手出しすべきではありません。
> 一つの Font インスタンスが、複数のコントロールで扱われる可能性があるためです。
> .NET Compact Framework の場合は、正直分かりません。
> 各種処理が Microsoft.AGL.Forms 名前空間経由で、DllImport されてしまっていて、
> 処理内容を追跡できそうにありません。
> Microsoft 有償サポートに問い合わせようにも、ライフサイクルが既に終了してしまっていますし。

AmbientとはフォームのFontを子コントロールが継承する機能であると理解しました。
よって、フォームのFontと子コントロールのFontは同じインスタンスである場合がある。
このような状況において、子コントロールのFontをDisposeしてしまうと、
フォームのFontがどうなっちゃうの?ってことであると理解しました。

フォームAのFontと、フォームBのFontが共用されることがなければ
フォームAのDisposeのタイミングで、フォームAの子コントールのFontを
Disposeするには、問題ないと考えても良いのでしょうか?
※よくわからないと記述があるので、わからないという回答かと思いますが(泣き)


> 以下、Font プロパティが返すインスタンスに関する実験コード。

この実験の結果をどのように理解していいか
正直に言いますと良くわかりませんでした。
FALSEになるってことは、textBox1.Font = f1;を実行したときに
f1が設定されるのではなく、フォームのFontから継承される機能が働き、
別のインスタンスになるのではという理解で現在はいます。

返信 編集キー/


管理者用

- Child Tree -