私はスレッドに問題があります。スレッドを作成してログを書きます(メソッドの書き込みは既に実装済み) これは単体テストで、実行するとうまくいきます、例外が表示されます。 System.AppDomainUnloadedException:アンロードされたAppDomainにアクセスしようとしました。これは、テストがスレッドを開始したが、スレッドを停止しなかった場合に発生する可能性があります。完了する前に、テストで開始したすべてのスレッドが停止していることを確認します。Thread.Suspend()は廃止されました
私はThreadC.Suspend()を使用しようとしましたが、エラーは消えてしまいましたが、私はSuspendを廃止しました。 どうすれば修正できますか?
public void TestMethod1()
{
try
{
LogTest logTest = new LogTest(new FileLog());
logTest.PerformanceTest();
logTest = new LogTest(new CLogApi());
logTest.PerformanceTest();
logTest = new LogTest(new EmptyLog());
logTest.PerformanceTest();
}
catch (Exception)
{
Assert.IsTrue(false);
}
}
public class LogTest
{
private readonly Log log;
private int numberOfIterations = 5;
public LogTest(Log log)
{
this.log = log;
}
public void PerformanceTest()
{
for (int i = 0; i < this.numberOfIterations; i++)
{
try
{
Thread threadC = Thread.CurrentThread;
threadC = new Thread(this.ThreadProc);
threadC.Name = i.ToString();
threadC.Start();
// threadC.IsBackground = true;
}
catch (Exception)
{
Assert.IsTrue(false);
}
}
}
private void ThreadProc()
{
try
{
this.log.Write(" Thread : " + Thread.CurrentThread.Name.ToString());
this.log.Write(" Thread : " + Thread.CurrentThread.Name.ToString());
this.log.Write(" Thread : " + Thread.CurrentThread.Name.ToString());
this.log.Write(" Thread : " + Thread.CurrentThread.Name.ToString());
}
catch (Exception)
{
Assert.IsTrue(false);
}
}
}
を待つことができるスレッドを使用。 sledgehammerソリューションを使用しないで、AutoResetEventを使用してください。 ThreadProc()の終了時にSet()メソッド、Start()呼び出し後にWaitOne()メソッドを呼び出します。 –