はじめてのwx.NET

Gtk#のビルドが上手く行かないので、wx.NETに手を出して見ました。と、いってもこれはwxWidgets(旧wxWindows)のラッパーで、同じくPython用のラッパーであるwxPythonを使ったことがあるので、まるっきりの初めてという訳ではないのですが。まだ、バージョンが0.4なこともあって、イベントにdelegate/eventが使われていなかったり、まだまだC#っぽくはなっていないけど、wxWidgets自体が安定していそうなので、ちょっと期待です。

あと、wx.NET自体の話ではないのですが.NETとMonoでアパートメントの扱いに違いがありそうで気になりました。以下、wx.NETを使ったテストの結果。

  • mcsでコンパイル、STAThreadなし
    • .NET上で実行:メッセージボックスに「Cannot initialize OLE」
    • MONO上で実行:正常
  • mcsでコンパイル、STAThreadあり
    • .NET上で実行:実行後、即終了(エラーもなにもない)
    • MONO上で実行:正常
  • cscコンパイル、STAThreadあり
    • .NET上で実行:正常
    • MONO上で実行:正常
  • cscコンパイル、STAThreadなし
    • .NET上で実行:メッセージボックスに「Cannot initialize OLE」、ウィンドウは表示される
    • MONO上で実行:正常

COMのアパートについて詳しい人なら原因が分かるのかも知れませんが、私はさっぱりなので現象について説明出来ないです・・・(^^;