GcApplicationZoomを使用した時、子フォームの表示と非表示を繰り返すとStackOverflowExceptionが発生する

文書番号 : 38904     文書種別 : 不具合     登録日 : 2015/06/29     最終更新日 : 2015/11/27
文書を印刷する
対象製品
MultiTouch for Windows Forms 1.0J
状況
修正済み
詳細
GcApplicationZoomを使用したフォームから、別のフォームを繰り返し表示するとStackOverflowExceptionが発生します。
本現象は、次のように同じインスタンスでフォームを表示する時に発生します。新しいインスタンスでフォームを表示する場合は発生しません。

[サンプルコード]
Form subForm;

private void button1_Click(object sender, EventArgs e)
{
  if (subForm == null)
  {
    subForm = new Form2();
  }
  subForm.ShowDialog(this);
}
回避方法
この問題はService Pack 3(v1.0.2015.1127)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

また、次のようにフォームのインスタンスを毎回作成することで回避することができます。

private void button1_Click(object sender, EventArgs e)
{
  using (Form f = new Form2())
  {
    f.ShowDialog(this);
  }
}

同じインスタンスで使う必要がある場合は、次のようにフォームを閉じた後GcZoomコンポーネントをデタッチすることで回避できます。

Form subForm;

private void button1_Click(object sender, EventArgs e)
{
  if (subForm == null)
  {
    subForm = new Form2();
  }
  subForm.ShowDialog(this);

  GrapeCity.Win.MultiTouch.GcApplicationZoom.GetGcZoom(subForm).Target = null;

}
キーワード
MTTK11169