2010-07-06 27 views

回答

1

儘管this answer,我認爲正式答案是否定的。

我之所以這樣說的原因是Database將存儲過程參數緩存在名爲parameterCache的實例變量中。

將項目添加到緩存中,並且也可以使用ClearParameterCache()方法清除緩存,而不先獲取對parameterCache的鎖定。

如果調用了ClearParameterCache(),那麼可能會遇到一個線程認爲緩存中存在項目的情況,然後另一個線程清除緩存,並且第一個線程去檢索已被移除的項目以及異常被拋出。

好消息是,如果ClearParameterCache()從未被調用,那麼我期望的最壞的情況是,最初參數可以被多次導出並且被多次添加到緩存中(通過不同的線程)。我沒有測試過,但它看起來應該仍然有效(儘管效率很低)。

所以,實際上,只要你不打電話ClearParameterCache()我認爲你應該沒問題。