簡體   English   中英

靜態對象線程安全

[英]Static object thread safety

我有一個預加載的靜態xmldocument對象,該對象具有錯誤代碼及其描述,如果我使用多線程應用程序並嘗試獲取特定錯誤代碼的錯誤代碼描述,是否需要對該方法進行鎖定。

這是我的簡短代碼(請忽略GetErrorCodeDescription方法的實現,僅考慮已使用_oXmlDoc),

預加載的靜態xmldocument _oXmlDoc

稍后我調用GetErrorCodeDescription方法來獲取這樣的錯誤代碼描述,

Public string GetErrorCodeDescription(string errorCode)
{
string errorDEscption="";

    XmlNodeList elemList = **_oXmlDoc**.GetElementsByTagName(errorCode);

    for (int i=0; i < elemList.Count; i++)
    {   
      errorDEscption=elemList[i].InnerXml);
    }  

return errorDEscption;

}

您最好只進行一次XML解析,然后將所有錯誤代碼和相應的描述放入字典中。 如果為此使用ConcurrentDictionary ,則應該是安全的。

XmlDocument文檔 ;

線程安全

此類型的任何公共static(在Visual Basic中為Shared)成員都是線程安全的。 不保證任何實例成員都是線程安全的。

因此,不,不能保證靜態實例的使用在沒有鎖定的情況下是線程安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM