Ce test échoue lorsqu'il est exécuté avec le coureur de la console NUnit. Il fonctionne si je viens de lancer ce test avec TestDriven.NET, mais pas si je cours toute la suite avec TestDriven.NET:C#/.NET: Test de BackgroundWorker avec NUnit
[Test]
public void BackgroundWorkerFiresRunWorkerCompleted()
{
var runner = new BackgroundWorker();
ManualResetEvent done = new ManualResetEvent(false);
runner.RunWorkerCompleted += delegate { done.Set(); };
runner.RunWorkerAsync();
bool res = done.WaitOne(TimeSpan.FromSeconds(10));
// This assert fails:
Assert.IsTrue(res, "RunWorkerCompleted was not executed within 10 seconds");
}
Je soupçonne que le problème a quelque chose à voir avec ne pas avoir une boucle de message, mais Je ne suis pas sûr.
Quelle est la configuration requise pour utiliser BackgroundWorker?
Y a-t-il une solution de contournement pour que le test fonctionne?
Cela fonctionne. Merci! –
Nous avons trouvé que DoEvents() n'est requis que lorsque le test (ou un test précédent dans le même test) instancie un formulaire ou un contrôle Windows. Pourquoi? –
Parce que pour n'importe quel contrôle WinForms, les messages de fenêtre doivent être passés à travers la pompe de message, ce qui n'arrive pas si vous n'appelez pas 'DoEvents()'. – Lucero