FAQ
ArcGIS コントロールが使用する消費メモリに関する制限

ナレッジ番号:2758 | 登録日:2023/05/29 | 更新日:2023/12/28

概要

プロセス内で ArcGIS コントロール(MapControl、TOCControl、ToolbarControl 等)は、インスタンスを作成・削除を繰り返すとプロセスが使用する消費メモリが増加し続けます。プロセスを終了しなければ確保されたメモリを完全に解放することはできません。これは既知の制限です。

そのため、マップを表示するフォームを表示/非表示とされたい場合は、MapControl を含むフォームをグローバル変数として保持しておき、フォームの表示/非表示によって、新規作成するインスタンスを最小限にとどめるべきです。

サンプル コード

フォームの表示/非表示の制御

MapControl を持つフォーム (Form2) をグローバル変数で保持し、Visible プロパティの変更によって表示・非表示を制御する方法です。

public partial class Form1 : Form
{
    public Form2 form2;

    public Form1()
    {
        InitializeComponent();

        //インスタンスを作成
        form2 = new Form2();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //フォーム 2 を表示する
        form2.Visible = true;
    }
}
Public Class Form1

    Private form2 As Form2

    Public Sub New()

        InitializeComponent()

        'インスタンスを作成
        form2 = New Form2()

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        
        'フォーム 2 を表示する
        form2.Visible = True

    End Sub

End Class

フォームを閉じる操作をキャンセルして非表示に設定

フォームを閉じる (FormClosing) イベント発生時に、フォームを閉じる操作をキャンセルし、非表示に変更します。

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
    //FormClosing イベントをキャンセル
    e.Cancel = true;

    //非表示にする
    this.Hide();
}
Private Sub Form2_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    
    'FormClosing イベントをキャンセル
    e.Cancel = True
     
    '非表示にする
    Me.Hide()

End Sub

メタデータ

種類

製品