簡體   English   中英

這個C#代碼是什么意思?

[英]What this C# code mean?

誰可以給我解釋一下這個。 我有這樣的代碼,但我不知道是什么意思。

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

我的問題:

  1. 這個方法是EventHandler嗎?

  2. 這段代碼的目的是什么?

    BeginInvoke((MethodInvoker)delegate(){

  3. 執行條件“Else”時“狀態”發生了什么?

注意:

連接是一種方法。

State是此代碼描述的枚舉

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;

這個方法是EventHandler嗎?

是的。

這段代碼的目的是什么?

您正在使用delegate { ... }定義一個匿名方法,然后將其轉換為MethodInvoker委托並將其傳遞給Control.BeginInvoke方法,該方法在創建控件的線程上異步執行此匿名方法。

執行條件“Else”時“狀態”發生了什么?

如果cbAutoConnect.Checkedtrue Connect方法正在調用,否則State's值將更改為ConnectState.NotFound ,就是這樣。

這是像你說的那樣的事件。 如果連接失敗,並且檢查了自動連接,它會再次嘗試重新連接,如果沒有,它會通過使用ConnectionState給出“NotFound”錯誤

我建議你向編寫本文的程序員提問

1可能是的,你也可以找到誰調用它來確保猜測。 2 asyn執行匿名委托(方法)
3呃~~這個成員的設置方法很奇怪。

看看這個:case ConnectState.NotFound:DoingSomeThing; 設置值后,它沒有結束,如果狀態改變,繼續執行DoingSomeThing。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM