私は答えを検索するのに多くの時間を費やしますが、私はそれを見つけられませんでした。私たちは、自動印刷作業のためのC1レポートコンポーネントを備えたコンソールアプリケーション(exe)を持っています。このアプリケーションはcmdファイルから実行され、cmdファイルは毎分SQL Server 2014からcmdexecによって呼び出されます。それは非常にうまく動作しますが、GDI + Initialize - System.Drawing.SafeNativeMethods + Gdip.propertiesをmontly初期化する以外の方法があります。これを解決する機会はありませんので、サーバを再起動する必要があります。GDI +初期化例外が発生する可能性があります
echoコマンドでcmdファイルを作成しようとしました。それはうまくいき、エコーから出力を得ました。そこで、私はConsole.Writeline( "Hello world")のみでアプリケーションを作成しました。それは正常に働いた。次に、System.Drawingへの参照を追加します。何も起こらなかった - ouputは生産された。その後、System.Drawing.Bitmapオブジェクトを作成し、GDI + Initialize例外が発生しました。
SQLサーバー上のジョブは、SQLRUNSERVICESとして実行され、管理者グループに属しています。しかし、私がSQLRUNSERVICESとしてログインし、コマンドラインでアプリケーションを起動すると、アプリケーションは例外なく正常に動作します。別のユーザーとしてログオンしても問題はありません。 SQLプロキシ経由でのみSQLRUNSERVICESを使用します。
Windowsセッションに何か問題があるはずです。このアプリケーションは、いくつかのレポートと仕上げを開始します。だから私はアプリケーションが終了したときにメモリが解放され、GDIオブジェクトがフリーになると思います。 GDIを扱うオブジェクトごとにcall disposeメソッドがあるかどうかを確認します。
セッションで使用されるGDIオブジェクトを見るチャンスはありますか?または、この例外を引き起こす原因は何ですか?アプリケーションが実行されていないときには何も見えないので、私はタスクマネージャを使うことができません。
ありがとうございます。それは毎月繰り返してサーバーを再起動しているので、私たちのために非常にstresfull問題です。