作成日: 2019/08/23 最終更新日: 2020/02/25
文書種別
不具合
状況
修正済み
詳細
下記条件でリサイズコンポーネント(GcResize)を使用している場合、フォームを閉じると例外が発生します。
◎サンプルコード(C#)
- フォームを継承して使用している
- フォームのAutoScrollを有効にしている
- 子フォームにリサイズコンポーネントを配置している
- 親フォームでサンプルコードのように独自のDispose処理を実装し、子コントロールをすべてDisposeしている
- フォーム上に配置したボタンなどのClickイベントでフォームをクローズしている
◎サンプルコード(C#)
protected override void Dispose(bool disposing)
{
if (disposing)
{
// 後処理を行う
CleanUp(this.Controls);
if (components != null)
{
CleanUp(this.Controls);
components.Dispose();
}
}
base.Dispose(disposing);
}
private void CleanUp(Control.ControlCollection controls)
{
if (controls == null)
return;
foreach (Control control in controls)
{
if (control != null)
{
if (control.HasChildren)
{
CleanUp(control.Controls);
}
if (!(controls.Owner != null && controls.Owner is SplitContainer))
{
try
{
control.Dispose();
}
catch (InvalidOperationException ex)
{
}
}
}
}
}
{
if (disposing)
{
// 後処理を行う
CleanUp(this.Controls);
if (components != null)
{
CleanUp(this.Controls);
components.Dispose();
}
}
base.Dispose(disposing);
}
private void CleanUp(Control.ControlCollection controls)
{
if (controls == null)
return;
foreach (Control control in controls)
{
if (control != null)
{
if (control.HasChildren)
{
CleanUp(control.Controls);
}
if (!(controls.Owner != null && controls.Owner is SplitContainer))
{
try
{
control.Dispose();
}
catch (InvalidOperationException ex)
{
}
}
}
}
}
回避方法
この問題はService Pack 5(v10.0.4005.2012)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
Service Pack 5より前のバージョンでは次の方法で回避可能です。
子フォームのDispose処理を以下のように変更します。
◎サンプルコード(C#)
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
Service Pack 5より前のバージョンでは次の方法で回避可能です。
子フォームのDispose処理を以下のように変更します。
◎サンプルコード(C#)
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
// 回避方法
try
{
this.gcResize1.Target = this;
base.Dispose(disposing);
}
finally
{
this.gcResize1.Target = null;
}
}
{
if (disposing && (components != null))
{
components.Dispose();
}
// 回避方法
try
{
this.gcResize1.Target = this;
base.Dispose(disposing);
}
finally
{
this.gcResize1.Target = null;
}
}
旧文書番号
84403