相关疑难解决方法(0)

在wpf中调用InvokeRequired

我在一个Windows forms应用程序中使用了这个函数

delegate void ParametrizedMethodInvoker5(int arg);

private void log_left_accs(int arg)
{
    if (InvokeRequired) 
    {
        Invoke(new ParametrizedMethodInvoker5(log_left_accs), arg);
        return;
    }

    label2.Text = arg.ToString();
}
Run Code Online (Sandbox Code Playgroud)

但在WPF它不起作用.为什么?

c# wpf invokerequired winforms

31
推荐指数
3
解决办法
4万
查看次数

为什么DispatcherObject.CheckAccess()和VerifyAccess()隐藏在Intellisense中?

System.Windows.Threading.DispatcherObject类(DependencyObject基于)包含有用的功能,称为CheckAccess(),确定所述代码是否被UI线程上运行.

当我昨天想要使用它时,我很困惑地发现Intellisense没有显示该函数(也没有VerifyAccess(),当不在UI线程上时抛出异常),即使MSDN库列出它.我决定使用Reflector调查这个类.似乎有问题的函数EditorBrowsable(EditorBrowsableState.Never)附加了一个属性.使用的DispatcherDispatcherObject具有附加到的相同属性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中一些最有用的方法)?

intellisense .net-3.5

22
推荐指数
1
解决办法
2306
查看次数

标签 统计

.net-3.5 ×1

c# ×1

intellisense ×1

invokerequired ×1

winforms ×1

wpf ×1