Avatar billede arvad Nybegynder
05. november 2001 - 10:43 Der er 5 kommentarer og
1 løsning

Hvorfor kaster min \"Observer\" StateInvariantError???

Java kaster følgende:
javax.swing.text.StateInvariantError: GlyphView: Stale view: javax.swing.text.BadLocationException: Length must be positive

Fejlen kommer fra en observer der kaldes hvert sekund (til et ur)- hvad skyldes den? Hvad betyder den?

Avatar billede disky Nybegynder
05. november 2001 - 10:47 #1
Den betyder din Length ikke er positiv.

Post koden.
Avatar billede arvad Nybegynder
05. november 2001 - 10:59 #2
Problmet er at den nogengange starter op på den måde...
Ikke altid - Kan det skyldes at Swíng ikke er threadsafe?

Koden:

tUr = new Timer(1000, new ActionListener()
{
  public void actionPerformed(ActionEvent evt)
  {
    update();
        notifyObservers(\"6\");
  }
});
Avatar billede disky Nybegynder
05. november 2001 - 11:01 #3
Det kan sagtens skyldes det med threadsafe.

hvis værdien hentes af en tråd, før den er helt ok.

Prøv at gør den threadsafe.
Avatar billede arvad Nybegynder
05. november 2001 - 11:10 #4
Hvordan gør man det?

Avatar billede disky Nybegynder
05. november 2001 - 11:14 #5
De variabler du bruger fra flere task, kan du f.eks. kalde igennem nogle synchronized get og set metoder.

Eller køb bogen:

Taming Java Thread skrevet af Allen Holub.

Kan købes her:
http://www.bookshop.co.uk/ser/serdsp.asp?shop=20037&isbn=1893115100&DB=224

Den er uhyggelig god om emnet.
Avatar billede disky Nybegynder
05. november 2001 - 11:26 #6
Held og lykke.

Hvis der er problemmer spørger du bare i samme tråd igen.
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
Kurser inden for grundlæggende programmering

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