[System::STAThreadAttribute]

VCのプログラムをC++/CLRに移植してSystem.Windows.Forms.OpenFileDialogを使用した時などに、下記のようなエラーが出るかもしれません。
そんな時はVC側のWinMainにSTAThreadAttributeを付加すれば直ります。
CommonDialogがMTAに対応してないってことですかね。


[System::STAThreadAttribute]
int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)


err.png


‘System.Threading.ThreadStateException’ のハンドルされていない例外が System.Windows.Forms.dll で発生しました。
追加情報: OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。Main 関数に STAThreadAttribute が設定されていることを確認してください。 この例外はデバッガがプロセスにアタッチされている場合にのみ発生します。


Author: kachi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です