Click here to Skip to main content
15,901,001 members
Home / Discussions / C#
   

C#

 
GeneralRe: Environment variable Pin
cfl13-Jan-04 15:42
cfl13-Jan-04 15:42 
General.NET version dependent compilation Pin
brain2cpu12-Jan-04 21:09
professionalbrain2cpu12-Jan-04 21:09 
GeneralRe: .NET version dependent compilation Pin
Heath Stewart13-Jan-04 5:12
protectorHeath Stewart13-Jan-04 5:12 
QuestionDragDrop to a native window? Pin
TuringTest112-Jan-04 19:20
TuringTest112-Jan-04 19:20 
AnswerRe: DragDrop to a native window? Pin
Heath Stewart13-Jan-04 5:07
protectorHeath Stewart13-Jan-04 5:07 
GeneralRe: DragDrop to a native window? Pin
TuringTest113-Jan-04 5:55
TuringTest113-Jan-04 5:55 
Generalasking for system tray application Pin
azusakt12-Jan-04 16:25
azusakt12-Jan-04 16:25 
GeneralRe: asking for system tray application Pin
Jeff Mackie12-Jan-04 17:16
sussJeff Mackie12-Jan-04 17:16 
GeneralRe: asking for system tray application Pin
azusakt12-Jan-04 17:51
azusakt12-Jan-04 17:51 
GeneralRe: asking for system tray application Pin
Heath Stewart13-Jan-04 4:53
protectorHeath Stewart13-Jan-04 4:53 
Questionreturning when inside a lock - is it safe? Pin
Brandon Haase12-Jan-04 15:29
Brandon Haase12-Jan-04 15:29 
AnswerRe: returning when inside a lock - is it safe? Pin
Heath Stewart13-Jan-04 4:46
protectorHeath Stewart13-Jan-04 4:46 
GeneralRe: returning when inside a lock - is it safe? Pin
Brandon Haase13-Jan-04 16:13
Brandon Haase13-Jan-04 16:13 
AnswerRe: returning when inside a lock - is it safe? Pin
scadaguy13-Jan-04 5:23
scadaguy13-Jan-04 5:23 
Brandon,

Returning inside a lock is okay.

I don't necessarily see anything incorrect about your implementation. However, the double-checked locking pattern is essentially useless as you have used it since you'll always be aquiring at least one lock anyway. I would suggest the following code...

public class IsoCurrencyInfo
{
    private static Hashtable _iciRegistry = new Hashtable();

    public static IsoCurrencyInfo GetInstance(string isoCode)
    {
        if (!_iciRegistry.Contains(isoCode))
        {
            lock (syncRoot)
            {
                if (!_iciRegistry.Contains(isoCode))
                {
                    _iciRegistry.Add(isoCode, new IsoCurrencyInfo(isoCode));
                }
            }
        }
        return (IsoCurrencyInfo)_iciRegistry[isoCode];
    }
}


It is important to realize that the Hashtable is the only IDictionary collection that will work as I have used it. This is because the Hashtable can support multiple readers and one writer simultaneously. Likewise, you won't be able to use the same trick with an ArrayList. In this implementation the lock is rarely acquired.

Brian
GeneralRe: returning when inside a lock - is it safe? Pin
Brandon Haase13-Jan-04 16:28
Brandon Haase13-Jan-04 16:28 
Generalremoting access Pin
haih12-Jan-04 15:23
haih12-Jan-04 15:23 
GeneralRe: remoting access Pin
Heath Stewart13-Jan-04 4:31
protectorHeath Stewart13-Jan-04 4:31 
GeneralHelp with MonthCalendar class Pin
KingTermite12-Jan-04 15:18
KingTermite12-Jan-04 15:18 
GeneralRe: Help with MonthCalendar class Pin
Heath Stewart13-Jan-04 3:41
protectorHeath Stewart13-Jan-04 3:41 
GeneralRe: Help with MonthCalendar class Pin
KingTermite13-Jan-04 4:27
KingTermite13-Jan-04 4:27 
GeneralRe: Help with MonthCalendar class Pin
Heath Stewart13-Jan-04 4:37
protectorHeath Stewart13-Jan-04 4:37 
GeneralRe: Help with MonthCalendar class Pin
KingTermite13-Jan-04 5:43
KingTermite13-Jan-04 5:43 
GeneralRe: Help with MonthCalendar class Pin
Heath Stewart13-Jan-04 5:50
protectorHeath Stewart13-Jan-04 5:50 
GeneralRe: Help with MonthCalendar class Pin
KingTermite13-Jan-04 6:02
KingTermite13-Jan-04 6:02 
GeneralRe: Help with MonthCalendar class Pin
Heath Stewart13-Jan-04 6:47
protectorHeath Stewart13-Jan-04 6:47 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.