Udostępnij za pośrednictwem


インポート/エクスポート時にSystem.Drawing.Graphics.CopyFromScreenにて例外が発生する

AX2009 SP1において表題の事象の簡易回避策の例をご案内します。

リモートデスクトップ経由でインポート/エクスポート機能を実行する際に、リモートセッションのWindowを閉じて再開しようとすると以下の例外が発生するケースが報告されました。

 

System.ComponentModel.Win32Exception: ハンドルが無効です。
   場所 System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation)

 

インポート/エクスポート処理実行中にリモートデスクトップセッションのWindowを閉じないという対処の他に、

AOSバッチサーバーにてバックグラウンド処理を実施させるよう以下の回避策があります。

クラス SysDataExport の runImpersonated メソッドにて true を返すようにし、

public boolean runsImpersonated()
{
    //return false;
    return true;

}

かつインポート/エクスポート時に「AOSで実行」をチェックし、バッチ処理をスケジュールしますとAOSバッチサーバー上で(バックグラウンド)実行がなされます。

*** 変更は小さいですが、カスタマイズに相当しますので事象に遭遇された場合の対処方法として有用かどうか開発環境等で必ずご確認頂けますようお願い致します。