1

私のコードは小さなデモアプリで完全に機能しますが、大規模な本番システムで実行すると、次の例外がスローされます。

Unhandled Exception: System.ObjectDisposedException: Cannot access a closed Stream.
   at System.IO.MemoryStream.get_Length()
   at Gurock.SmartInspect.LogEntry.get_Size()
   at Gurock.SmartInspect.SchedulerCommand.get_Size()
   at Gurock.SmartInspect.SchedulerQueue.Remove(SchedulerQueueItem item)
   at Gurock.SmartInspect.SchedulerQueue.Dequeue()
   at Gurock.SmartInspect.Scheduler.Dequeue()
   at Gurock.SmartInspect.Scheduler.Run()
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
     ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,
     ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

エラーの原因となるC#コードは次のとおりです。

// This grabs a bitmap from Mathematica. It works 95% of the time.
Bitmap bitmap = new Bitmap(Globals.State.Mathematica.EvaluateToImage(cmdGraph, 0, 0));

// Log to SmartInspect.
SiAuto.Main.LogBitmap("test", bitmap); // Errors disappear if this line is removed.
4

1 に答える 1

1

問題を修正しました。

SmartInspect v3.3.2.48を非同期モードで実行すると、ビットマップを処理するときにこのエラーがスローされることがあります。解決策は、接続文字列内のすべての「非同期」タグを削除することです。

以前の値SiAuto.Si.Connectionsは次のとおりです。

pipe(reconnect="true", reconnect.interval="30", backlog.enabled="true", backlog.flushon="debug", backlog.keepopen="true", async.enabled="true")

これに変更すると、機能します。

pipe(reconnect="true", reconnect.interval="30", backlog.enabled="true", backlog.flushon="debug", backlog.keepopen="true")

余談ですが、SmartInspectは優れており、不満はありません。これは私が2年ぶりに発見した問題であり、1年前のバージョンを使用しているため、この問題はとにかく最新リリースで修正された可能性があります。

于 2012-09-26T20:02:05.747 に答える