VS2008単体テストプロジェクトでTraceSource.TraceDataを呼び出そうとすると、ObjectDisposedExceptionが発生します。以下に、問題を一貫して再現する非常に小さなコードサンプルを含めました。これは、最初の単体テストを実行した後にのみ表示されますが、Webサイトが起動して多くのユーザーで実行されると、影響を受ける可能性があります。
これは、最初の単体テストの後で、基になるストリームが閉じられているようなものです。「オーバーフロー」の達人からの助けを大いに歓迎します。
手順:
1)VS2008単体テストプロジェクトを作成します
2)次のコードでクラスを追加します。
namespace TracingError
{
using System.Diagnostics;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class UnitTest1
{
public static TraceSource ts = new TraceSource("TraceTest");
[TestMethod]
public void A()
{
ts.TraceEvent(TraceEventType.Information, 1, "Hello from A");
}
[TestMethod]
public void B()
{
ts.TraceEvent(TraceEventType.Information, 1, "Hello from B");
}
}
}
3)次のコードでapp.configを追加します。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
<remove name="Default" />
</listeners>
</source>
</sources>
<switches>
<add name="SourceSwitch" value="Verbose" />
</switches>
<trace autoflush="true" indentsize="4"></trace>
</system.diagnostics>
</configuration>