rksoftware

Visual Studio とか C# とかが好きです

XAML Islands の MapControl 使用時に InvalidComObjectException 例外 (WinForms)

Windows フォームアプリケーションで XAML Islands の MapControl を使用している場合に、

System.Runtime.InteropServices.InvalidComObjectException
基になる RCW から分割された COM オブジェクトを使うことはできません。

という例外が発生することがありました。発生のタイミングはフォームのクローズ時。

■ 対策?

深い事はまだ調べていませんが、フォームのクローズのタイミングで MapControl をフォームから Remove すると静かにフォームが閉じるようになりました。

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.Controls.Remove(mapControl1);
            mapControl1 = null;
        }
    }
}