下面有一段代碼,其中一個不知道是什么意思, Task.Run( new Action (() => { GetPLCValue();} ) );
不知道這個知道點在哪里查找。我看了不像是 lambda運算式.
private void button1_Click(object sender, EventArgs e)
{
if (this.button1.Text == "連接")
{
//實體化socket
tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//IP4,位元組流,TCP
EndPoint EP = new IPEndPoint(IPAddress.Parse(this.txt_IP.Text), int.Parse(this.txt_Port.Text));
try
{
tcpClient.Connect(EP);
}
catch (Exception ex)
{
MessageBox.Show("連接失敗:" + ex.Message);
return;
}
MessageBox.Show("連接成功");
this.button1.Text = "關閉";
Task.Run( new Action (() => { GetPLCValue();} ) ); ////就是這句??????????????
}
else
{
tcpClient?.Close();
this.button1.Text = "連接";
}
}
uj5u.com熱心網友回復:
這叫委托啊啊uj5u.com熱心網友回復:
Task.Run:執行一個異步的任務(即在另一執行緒執行,不影響當前代碼繼續執行)new Action:執行的異步任務在這個委托里定義
() => { ... }:匿名函式,即由系統內部自動起名字的函式,作用域僅限本函式體內
綜合來說,就是執行一個異步任務,任務內容是執行一段代碼,這段代碼內容是:GetPLCValue();
這個陳述句有些啰嗦,下列是簡化過的結果,與原陳述句等價:
Task.Run( () => { GetPLCValue(); } ) ;
uj5u.com熱心網友回復:
那還不如一步到位呢:Task.Run(GetPLCValue);uj5u.com熱心網友回復:
Task.Run( new Action (() => { GetPLCValue();} ) ); ////就是這句??????????????-----------
這句寫多了,應該是這樣:new Action 可以省略
Task.Run(()=>{GetPLCValue();});
就是開起一個執行緒,運行GetPLCValue()方法
()=>{}
是不帶引數的匿名函式
uj5u.com熱心網友回復:
異步跑了一個 Action 委托。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/265224.html
標籤:C#
