Après l'exécution des deux cas de test suivants, une exécution COM est imprimée sur la console. Qu'est-ce que je fais mal?Exceptions COM en sortie avec WPF
Si j'exécute un test seul ou si j'exécute les deux tests ensemble, l'exception est écrite une seule fois sur la console. Cela me fait penser qu'il y a une sorte de ressource par AppDomain que je ne nettoie pas.
J'ai essayé les tests avec NUnit et avec MSTest, avec le même comportement dans les deux environnements. (En fait, je ne suis pas sûr si vous utilisez les deux tests dans les résultats MSTest en une seule impression d'exception ou deux.)
Exception:
System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.
at System.Windows.Input.TextServicesContext.StopTransitoryExtension()
at System.Windows.Input.TextServicesContext.Uninitialize(Boolean appDomainShutdown)
at System.Windows.Input.TextServicesContext.TextServicesContextShutDownListener.OnShutDown(Object target)
at MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e)
Code d'essai:
using NUnit.Framework;
namespace TaskdockSidebarTests.Client
{
[TestFixture, RequiresSTA]
public class ElementHostRCWError
{
[Test]
public void WinForms()
{
var form = new System.Windows.Forms.Form();
var elementHost = new System.Windows.Forms.Integration.ElementHost();
form.Controls.Add(elementHost);
// If the form is not shown, the exception is not printed.
form.Show();
// These lines are optional. The exception is printed with or without
form.Close();
form.Controls.Remove(elementHost);
elementHost.Dispose();
form.Dispose();
}
[Test]
public void WPF()
{
var window = new Window();
// If the window is not shown, the exception is not printed.
window.Show();
window.Close();
}
}
}
Peut-être http://social.msdn.microsoft.com/forums/en-US/vststest/thread/e53fdc45-23f3-4aee-aad9-f63769f2c638/ aide –
Malheureusement, je ne peux pas utiliser MTA, comme WPF nécessite STA. Créer l'hôte de formulaire et d'élément dans SetUp ne semble pas non plus faire l'affaire. Argh. –
Si je ne me trompe pas, cette exception ne provoque pas l'échec de l'échec, n'est-ce pas? J'ai rencontré la même exception lors de l'annulation de mes contrôles WPF, j'ai choisi de l'ignorer ..;) – Bubblewrap