这个C#代码是什么意思?

时间:2014-02-21 06:57:32

标签: c# .net bluetooth

有人可以向我解释一下。 我有这样的代码,但我不知道它的意思。

void ConnectionManager_ConnectionFailed(object sender, EventArgs e)
{
    BeginInvoke((MethodInvoker)delegate()
    {
        if (cbAutoConnect.Checked)
            Connect();
        else
            State = ConnectState.NotFound;
    });
}

我的问题:

  1. 此方法是EventHandler吗?

  2. 此代码的目的是什么?

      

    的BeginInvoke((MethodInvoker)委托()       {

  3. 执行条件“Else”时,“状态”发生了什么?

  4. 注意:

    Connect是一种方法。

    状态是此代码描述的枚举

    public ConnectState State
            {
                get
                {
                    return _State;
                }
    
                {
                    if (_State == value)
                        return;
    
                    _State = value;
    
                    switch (value)
                    {
                        case ConnectState.Connected:
                            DoingSomeThing;
                            break;
    
                        case ConnectState.Connecting:
                            DoingSomeThing;
                            break;
    
                        case ConnectState.NotFound:
                            DoingSomeThing;
                            break;
                    }
    
                    if (StateChanged != null)
                        StateChanged(this, new EventArgs<ConnectState>(value));
                }
            }
    

    另一个提示

    枚举启动

    public enum ConnectState { Connected, Connecting, NotFound }
    ConnectState _State = ConnectState.NotFound;
    

    我不知道这究竟是什么,但我认为这是“ConnectState”对象/类的自定义EventHandler声明。

    public EventHandler<EventArgs<ConnectState>> StateChanged;
    

3 个答案:

答案 0 :(得分:2)

  

此方法是否为EventHandler?

是的。

  

此代码的目的是什么?

您正在使用delegate { ... }定义匿名方法,然后将其转换为MethodInvoker委托并将其传递给Control.BeginInvoke方法,该方法在创建控件的线程上异步执行此匿名方法上。

  

执行条件“Else”时“状态”发生了什么?

如果cbAutoConnect.Checked方法正在调用true Connect,则State's值会更改为ConnectState.NotFound,就是这样。

答案 1 :(得分:1)

这是像你说的那样的事件。如果连接失败,并且检查了自动连接,它会再次尝试重新连接,如果没有,它会通过使用ConnectionState为您提供“NotFound”错误

我建议您向编写此内容的程序员提出问题

答案 2 :(得分:-2)

1可能是的,你也可以找到谁调用它来确保猜测。 2 asyn执行匿名代表(方法)
3月~~这个成员的设定方法很奇怪。

看一下:case ConnectState.NotFound:                         DoingSomeThing; 设置值后,它没有结束,如果状态改变,继续执行DoingSomeThing。