10. juni 2005 - 11:39Der er
9 kommentarer og 1 løsning
Monitor.Enter / Monitor.Exit
Hey eksperter. To spørgsmål:
(1) Jeg har et par member variabler i min klasse, som benyttes både af min hovedtråd og en worker-tråd ofte. Jeg skal derfor benytte Monitor.Enter og Monitor.Exit hver gang jeg læser/skriver fra dem. Men hvilke skal jeg beskytte på denne måde?
Jeg har læst på MSDN at man kun skal beskytte reference typer på denne måde, og ikke value typer. Jeg kan regne ud at objekt-typer som fx Control og FileInfo er reference typer, men hvilke af de simple datatyper er reference typer hhv. value typer? Her taler jeg om Strings, Int32 og Boolean.
(2) Jeg støder ind i et problem, når jeg skal beskytte member variabler som i nogle tilfælde kan være Nothing. Problemet består i, at Monitor.Enter smider en fejl, hvis jeg forsøger at beskytte en sådan tom variabel. Hvordan skal jeg gribe dette an?
Er løsningen med skyggevariabler den eneste løsning, som er tilgængelig? Selvom jeg har set mange andre der benytter den, synes jeg den virker lidt "fusket" og ikke særlig pæn :o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.