folgender Workaround ist zwar nicht schön, funktioniert aber:
- Hauptthread führt Aktionen für Nutzer 1 aus - Kindthread wird als anonymer Delegat in der Test-Methode implementiert - Kindthread führt Aktion für Nutzer 2 aus - Exceptions von Kindthread werden manuell abgefangen - Hauptthread wartet mit Therad.Sleep manuell auf das Beenden des Kindthreads
[Test] public void Function1And2CanBeUsedConcurrently() { SomeClass obj = new SomeClass();
obj.Function1Executed += (s, e) => { // Nutzer2 simulieren, wenn Nutzer 1 bestimmte Aktion macht oder irgend ein Zustand erreicht ist new Thread(() => { try { // irgend eine Funktion hier jetzt ausführen function2Done = true; } catch (Exception exc) { System.Console.WriteLine(exc); throw; // NUnit ignoriert Exceptions in Background-Threads, deshalb auf die Console schreiben } finally { bgThreadFinished = true; } }).Start();