我有一個靜態的DataLibrary類實現了單例模式。C#線程靜態變量
public static FacilityRepository FacilRepo
{
get
{
if (_facilRepo == null)
{
_facilRepo = new FacilityRepository(Authenticated.UserId);
if (Authenticated.FacKey.Length > 0)
{
foreach (var fac in _facilRepo)
fac.IsSelected = (fac.FacilityKey == Authenticated.FacKey);
}
}
return _facilRepo;
}
}
private static FacilityRepository _facilRepo;
當使用Task.Factory.StartNew的FacilityReposity被重建多次,我怎樣才能避免這種情況我訪問此從不同的線程。
如果您同時創建許多新線程,並且它們都嘗試訪問FacilRepo屬性,則可能是因爲該屬性沒有鎖定。看看http://en.csharp-online.net/Singleton_design_pattern%3A_Thread-safe_Singleton(在底部) – WiseGuyEh 2011-03-17 15:03:18