C'è un modo per testare l'unità WaitHandle.WaitAll()
quando si utilizza la soluzione di test dell'unità integrata di Visual Studio. Quando provo ed eseguire un test che utilizza questa funzione all'interno di Visual Studio il test fallisce e quando l'esame dei risultati del test viene visualizzato il seguente errore:Come utilizzare WaitHandler.WaitAll in MSTest senza avvisi STA?
WaitAll for multiple handles on a STA thread is not supported
mi piacerebbe essere in grado di unit test l'uso di WaitAll()
poiché una quantità crescente della base di codice della mia API si sta ora spostando su un modello IAsyncResult
anziché su altri mezzi per eseguire operazioni multi-thread.
Modifica
Basato su suggerimento di Anthony ecco un metodo di supporto semplice che può essere utilizzato per richiamare tale codice in un ambiente di test di unità:
public static void TestInMTAThread(ThreadStart info)
{
Thread t = new Thread(info);
t.SetApartmentState(ApartmentState.MTA);
t.Start();
t.Join();
}
Quale versione di Visual Studio? –
Visual Studio 2008 con possibilità di passare al 2010 se necessario – RobV