1

オブジェクトでコールバックを使用してSynchronizationContext、WCF サービスからクライアント UI を更新しています。

私が使用するコードパターンは次のとおりです。

public void SetResults(string callId, IEnumerable<Result> results)
{
    uiSyncContext.Post(new SendOrPostCallback(state => {
            var r = (IEnumerable<Result>)state;
            chart1.Series[callId].Points.DataBindXY(r.Select...
        }, results);
}

このPostメソッドは、デリゲートと状態オブジェクトを受け入れます。他にサインはありません。

私は匿名メソッドを使用しているため、次のように書く傾向があります。

public void SetResults(string callId, IEnumerable<Result> results)
{
    uiSyncContext.Post(new SendOrPostCallback(state => {
            chart1.Series[callId].Points.DataBindXY(results.Select...
        }, null);
}

なぜなら:

  • 短いです
  • キャストを惜しまない
  • ローカル変数を宣言する必要はありません

それは機能しますが、2番目のアプローチにはどのようなリスクが伴うのでしょうか.

これは安全と見なされますか? 結果パラメーターは、後続の呼び出しによって何らかの形で「破損」する可能性がありますか?

4

1 に答える 1