Avatar billede montago Praktikant
07. maj 2007 - 09:47 Der er 6 kommentarer og
2 løsninger

Shared variable/metoder

Jeg har en klasse som indeholder en bunke Shared metoder og en enkelt Shared Vector

Klassen indsamler data fra databasen, og mapper dem ind i en Vector.

Når en bruger åbner en side, tjekkes der for om data'ne i vectoren kan bruges, hvis ikke re-mappes de nye data, hvorefter vector'en kan bruges

min frygt er så at 2 samtidige brugere, vil opleve at få blandede data. såfremt mapningen overhales af load/get metoderne ??


spørgsmålet er derfor: Vil det kunne ske at 2+ samtidige brugere. pga. trådet eksekvering vil få forkerte data? eller køre ASP.net servere en client-thread færdig før den næste ??


[psudo kode] ::

class conditionHandler
  dim condVec as conditionVector = new conditionVector
  dim working as identifier

  public shared sub init( vectorID )
    if vectorID != working then
        condVec = new conditionVector
        conVec = dataHandler.getConds( vectorID )
    end if
  end sub

  public shared function getVec( ID )
    init( ID )
    return condVec
  end function
end class
Avatar billede montago Praktikant
07. maj 2007 - 10:00 #1
min frygt:

bruger1..getVect(1)..init(1)..return(2)
bruger2........getVect(2)..init(2)..return(N)
brugerN...........getVect(N)..init(N)....return(N)
Avatar billede dr_chaos Nybegynder
07. maj 2007 - 12:40 #2
Ja det vil jeg mene.
Personlig laver jeg aldrig Shared(static i c#) metoder som behandler data.
Jeg oplevede et lignende problem da jeg havde en klasse med statiske funktioner som stod for database forbindelse.
Med flere brugere på gik det galt.
JEg lavede så et pattern. Mener det hedder singleton som ser ud på denne måde:
Private Shared ReadOnly instance As DbHandler = New DbHandler

Private Sub New()
End Sub

Public Shared Function GetDbHandler() As DbHandler
Return instance
End Function

og kalde den med:
DbHandler.GetDbHandler.RunProcedure("SP_Bruger_ValiderLogind", parameters, rowsAffected)

RunProcedure er en ikke shared funktion, men en public.
Avatar billede dr_chaos Nybegynder
07. maj 2007 - 12:41 #3
Må hellere lige sige at det muligvis ikke var den rigtige måde at gøre det på.
Men det løste problemet.
Avatar billede arne_v Ekspert
08. maj 2007 - 02:28 #4
du kan sagtens risikere at få problemer

enten skal du skifte til non shared

eller så skal du bruge SyncLock
Avatar billede arne_v Ekspert
17. juni 2007 - 05:46 #5
montago ?
Avatar billede montago Praktikant
17. juni 2007 - 10:00 #6
Hey... har efterhånden fået lidt mere  styr på denne elendige måde at håndtere sessions og Statiske variable...

smid et svar someone...


ps. hvorfor smider i ikke et svar, NÅR i svarer ???
Avatar billede dr_chaos Nybegynder
19. juni 2007 - 08:39 #7
Fordi selv om vi svarer ved vi ikke med sikkerhed om det er det rigtige svar.
Skal vi dele arne ?
Avatar billede arne_v Ekspert
19. juni 2007 - 11:19 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester