2009-06-28 7 views
0

ArcGISプロジェクトでArcFMを使用しようとしていますが、私はバグに気付きました。 私のメインスレッドが[STAThread]属性でマークされている場合、プログラムはOSローダーロック例外で終了するとハングします。その属性を削除すると、プログラムは正常終了します。
次のコードは、ここにArcFMライセンスでSTAThreadを使用

[STAThread] 
private static void Main() 
{ 
    MMAppInitialize mmAppInitialize = new MMAppInitialize(); 
    mmAppInitialize.IsProductCodeAvailable(mmLicensedProductCode.mmLPDesigner); 
} 

誰もが前にそれを見ているハングアップ?私が間違っていることはありますか?
私はSTAThreadを実行しなければならないと思いました。それ以外の場合、私のCOM呼び出しはメインから別のスレッドにマーシャリングされるからです。私のバグを発見

答えて

0

から
これは正常に動作します:

[STAThread] 
private static void Main() 
{ 
    MMAppInitialize mmAppInitialize = new MMAppInitialize(); 
    mmAppInitialize.IsProductCodeAvailable(mmLicensedProductCode.mmLPDesigner); 
    mmAppInitialize.Initialize(mmLicensedProductCode.mmLPDesigner); 
    mmAppInitialize.Shutdown(); 
} 

小さなバグまだある - これは動作しません。これが本当のユースケースではありませんが

[STAThread] 
private static void Main() 
{ 
    MMAppInitialize mmAppInitialize = new MMAppInitialize(); 
    mmAppInitialize.IsProductCodeAvailable(mmLicensedProductCode.mmLPDesigner); 
    mmAppInitialize.Shutdown(); 
} 

は、 - ライセンスを取得せずにライセンスをチェックするだけです。

Initializeと最後にShutdownを呼び出していましたが、aoAppInitializeの後にmmAppInitializeをシャットダウンしていたため、LoaderLock例外が発生しました。注文を切り替えた後、プログラムは正常に終了しました。

関連する問題