我正在通过非拥有的 UI 线程获取/检查 UIElement 的类型是否安全



我有一个自定义的UI元素。我正在通过拥有线程以外的线程访问它。我能够获取/检查其类型(自定义类型)并得到正确的结果。依赖这个结果安全吗?(我知道为了访问/更新其值,我们必须使用拥有UI线程)

前任:

bool result = ((uiElement as CustomType) != null)

检查控件的类型可以在拥有线程以外的线程中安全地完成:

bool result = uiElement is CustomType;

如果出于任何原因(您在问题中没有提到),

  • uiElement是外部可访问的变量(例如字段或属性),
  • 并且uiElement的值可能会被另一个线程更改,
  • 并且您仍然需要在类型检查后访问它,

将类型检查的结果分配给局部变量后更安全:

var customElement = uiElement as CustomType;
if (customElement != null)
{
    // do something with customElement ...
}

最新更新