Pep*_*por 22 intellisense .net-3.5
的System.Windows.Threading.DispatcherObject类(DependencyObject基于)包含有用的功能,称为CheckAccess(),确定所述代码是否被UI线程上运行.
当我昨天想要使用它时,我很困惑地发现Intellisense没有显示该函数(也没有VerifyAccess(),当不在UI线程上时抛出异常),即使MSDN库列出它.我决定使用Reflector调查这个类.似乎有问题的函数EditorBrowsable(EditorBrowsableState.Never)附加了一个属性.使用的Dispatcher类DispatcherObject具有附加到的相同属性CheckAccess()和VerifyAccess():
public abstract class DispatcherObject
{
// ...
[EditorBrowsable(EditorBrowsableState.Never)]
public bool CheckAccess();
[EditorBrowsable(EditorBrowsableState.Never)]
public void VerifyAccess();
// ...
[EditorBrowsable(EditorBrowsableState.Advanced)]
public Dispatcher Dispatcher { get; }
}
public sealed class Dispatcher
{
// ...
[EditorBrowsable(EditorBrowsableState.Never)]
public bool CheckAccess();
[EditorBrowsable(EditorBrowsableState.Never)]
public void VerifyAccess();
// ...
}
Run Code Online (Sandbox Code Playgroud)
我不相信该属性的应用是随机的(或一个笑话),所以我的问题是:它为什么存在?这些方法不应该直接调用吗?那么为什么不是它们protected(或者internal,像WPF中一些最有用的方法)?
| 归档时间: |
|
| 查看次数: |
2306 次 |
| 最近记录: |