私は技術レベルの従業員で、製造テスト環境でコーディングの一部を手伝っています。具体的な質問は、C# でイベントを処理することです。Button_click だけでなく、具体的には、シリアル ポートからのデータ ストリームがあり、シリアル ポートからのデータに応じてリアルタイムで UI を更新する必要がある場合です。たとえば、どちらも最終的に同じことを行う 2 つのアプローチがある場合、次の違いは何ですか。
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) {
input = (sender as SerialPort).ReadLine();
if (input.Contains("look for this"))
this.Invoke(new EventHandler(doSomething));
}
そして次のようなもの:
void OnGotData(object sender, EventArgs e) {...};
delegate void UpdateCallback(data d);
void doSomething(data d) {
...
if (field.InvokeRequired) {
UpdateCallback x = doSomething;
this.Invoke(x, new object[] { d });
}
else {
field.Text = d;
}
...
}
トレードオフは何ですか?より複雑な 2 番目のアプローチは慣例の問題ですか?