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 年内发现的第一个问题,而且由于我使用的是一个已有一年的版本,所以这个问题可能已经在最新版本中得到了修复。

于 2012-09-26T20:02:05.747 回答