J'ai écrit une méthode d'assertion Ensure.CurrentlyOnUiThread() , ci-dessous, qui vérifie que le thread actuel est un thread d'interface utilisateur.
- Cela va-t-il être fiable pour détecter le fil d'interface utilisateur Winforms ?
- Notre application est mixte WPF et Winforms, comment détecter au mieux un thread d'interface utilisateur WPF valide ?
- Y a-t-il une meilleure manière de faire cela? Peut-être des contrats de code ?
Assurer.cs
using System.Diagnostics;
using System.Windows.Forms;
public static class Ensure
{
[Conditional("DEBUG")]
public static void CurrentlyOnUiThread()
{
if (!Application.MessageLoop)
{
throw new ThreadStateException("Assertion failed: not on the UI thread");
}
}
}