問題的確切含義如下。有沒有保證AsyncCallbacks總是在主線程上執行?
我已閱讀MSDN文章here,並且(除非我是盲人),無法在任何地方看到它明確證實這一點。
爲了給出更多的範圍,我主要參考Socket
類中提供的Socket.Beginxxx
方法。
我認爲任何AsyncCallbacks將在主線程中執行是否安全?假設我調用的任何Socket.Beginxxx
方法也將從主線程調用。
編輯︰如果不是這樣的話,我應該lock
包含類的私人成員,當我修改它們中的一個Socket.Beginxxx
AsyncCallbacks?例如。將一個項目添加到字典?
不是。做出這個一攬子假設並不安全。當然,在UI線程中,當處理ASP.net應用程序中的請求時,你的延續將被整理回原始上下文,但是在控制檯應用程序(可能還有其他幾個我沒有想到的環境)中,沒有這樣的保證。 – spender
這是因爲爲什麼? –
閱讀:http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx – spender