我的代码在小型演示应用程序中运行良好,但是,当我在大型生产系统中运行它时会引发以下异常:
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.
答案 0 :(得分:1)
修正了问题。
如果SmartInspect v3.3.2.48以异步模式运行,则在处理位图时有时会抛出此错误。解决方案是删除连接字符串中的所有“async”标记。
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年内发现的第一个问题,因为我使用的是一年前的版本,这个问题可能在最新版本中得到修复。