1
我使用SynchronizationContext
對象的回調來更新WCF服務中的客戶端UI。在回調中使用匿名方法時,state參數是否有用?
我使用的代碼圖案如下:
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);
}
因爲:
- 它是短
- 它免去鑄造
- 沒有需求申報本地變量
儘管它有效,但我想知道第二種方法可能涉及哪些風險。
這是否被認爲是安全的?結果參數是否可以通過後續調用以某種方式「損壞」?
如果只有一個參數,確定它沒有太大的改進。 Hovewer中,一些回調函數傳遞了更多的參數,對於我直接在匿名函數體中使用它們非常方便。 – Larry 2014-10-16 12:23:42
如果這些回調是強制性的,那麼是的,這可能會有所幫助。但這正是你提出這個問題的原因。 – 2014-10-16 12:51:49