有人可以向我解释一下。 我有这样的代码,但我不知道它的意思。
void ConnectionManager_ConnectionFailed(object sender, EventArgs e)
{
BeginInvoke((MethodInvoker)delegate()
{
if (cbAutoConnect.Checked)
Connect();
else
State = ConnectState.NotFound;
});
}
我的问题:
此方法是EventHandler吗?
此代码的目的是什么?
的BeginInvoke((MethodInvoker)委托() {
执行条件“Else”时,“状态”发生了什么?
注意:
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;
答案 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。