我正在使用带有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);
}
因为:
- 它更短
- 它节省了演员表
- 无需声明局部变量
虽然它有效,但我想知道第二种方法可能涉及哪些风险。
这被认为是安全的吗?结果参数会被后续调用以某种方式“损坏”吗?