我正在使用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);
}
由于:
虽然它有效,但我想知道第二种方法可能涉及的风险是什么。
这被认为是安全的吗?结果参数可能会被后续调用以某种方式“损坏”吗?
答案 0 :(得分:2)
这被认为是安全的吗?
是。因为
结果参数是否会被子句调用“损坏”?
没有。 results
是SetResults()
方法的本地方法,因此虽然它被捕获但无法在其他地方重复使用/拦截。这里可以看到所有可以访问它的代码。
说了这么多,我认为它不比第一个版本好多少。