Я написал метод подтверждения Ensure.CurrentlyOnUiThread(), который показывает, что текущий поток является потоком пользовательского интерфейса.
- Будет ли это надежным в обнаружении потока пользовательских интерфейсов Winforms?
- Наше приложение является смешанным WPF и Winforms, как лучше всего определить действительный поток пользовательского интерфейса WPF?
- Есть ли лучший способ сделать это? Возможно, код заключен в контракты?
Ensure.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");
}
}
}