Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Threading problem

Postades av 2004-09-30 14:07:46 - Johan Almblad, i forum vb.net, Tråden har 12 Kommentarer och lästs av 1532 personer

Jag har ett problem med trådning som jag inte förstår mig på.
Med jämna mellanrum ska ett DataSet uppdateras från en databas. För att inte applikationen ska störas tänkte jag lägga uppdateringen i en egen tråd.
En timer triggar uppdateringen var 10:e sekund.
Om jag kör funktionen UppdateraTTDB direkt så funkar den klockrent. Men om jag anropar den genom en ny tråd från funktionen UppdateraTT_Thread() får jag felet "Object reference not set to an instace of an object". Felet uppträder på raden med DataAdapter.fill

Någon som vet varför?


Koden ser ut såhär:

Friend Sub UppdateraTT_Thread()

Dim TTtrad As Threading.Thread

TTtrad = New Threading.Thread(AddressOf UppdateraTTDB)
TTtrad.Start()

End Sub

Friend Sub UppdateraTTDB()

Try
Me.DataSetDagNy.Tables("text_tt").Clear()
Me.DataAdapterTT.Fill(Me.DataSetDagNy.Tables("text_tt"))

Catch ex As Exception
MsgBox(ex.Message)

End Try
End Sub


Svara

Sv: Threading problem

Postades av 2004-09-30 14:29:55 - Oskar Johansson

Troligtvis är det så att du försöker använda en anslutning du skapat i en annan tråd än ifrån den tråden du skapade den i (blev rörigt)

Dvs.
I din huvudtråd skapar du anslutninge; i din extra-tråd försöker du använda den. Misstänker att det kan ha något med det att göra

En annan variant är att t.ex. DataAdapterTT är nothing. Kolla upp framförallt det där med DataAdapterTT.


Svara

Sv: Threading problem

Postades av 2004-09-30 17:39:53 - Johan Almblad

Tack! Nu funkar det bättre!
Nu skapar jag en ny connection ocg det blir bra!

Hur blir det med tråden jag skapade. Dör den av sig själv när den faller utanför scopet. Dvs när metoden körts klart. Eller måste jag döda den på något sätt?

J


Svara

Sv: Threading problem

Postades av 2004-09-30 19:17:26 - Oskar Johansson

Lite enkelt: ( :-p )

En tråd är helt enkelt en funktion som körs i en egen tråd (hm...)

T.ex. har du ju huvudtråden. Om du inte kör något i den, t.ex. en loop (Application.Run() eller form.ShowDialog, den startar också en loop) så tar funktionen slut. Samma sak med tråden; en tråd tar alltid slut när funktionen tar slut.

Men de objekt du skapar i tråden tar inte nödvändigtvis slut ;)


Svara

Sv: Threading problem

Postades av 2004-10-02 10:41:49 - Patrik Löwendahl

Ännu enklare,

En tråd är en bit av processorns tid som används för att exekvera kod. I .NET startar men en tråds exekvering genom att be den köra koden för en viss funktion. När det inte längre finns någon mer kod att exekvera, dvs när metoden returnerar, så kommer tråden att få en status som "idle". Det innebär att tråden fortfarande lever men den kommer inte att användas av processorn eller operativsystemet förräns den får en ny uppgift och mer kod att exekvera (vilket ändrar dess status från "idle").

I realiteten betyder det at en tråd som inte hanteras efter den avslutat sin exekvering, kommer att fortsätta ta lite resurser. Även om det är väldigt lite resurser i jämförelse med en aktiv tråd.


Svara

Sv: Threading problem

Postades av 2004-10-04 08:52:33 - Johan Almblad

Nu har jag lyckats nysta upp trådarna, men något käkar minne vid uppdatering. Verkar inte som det är trådningen.
Visst finns det en funktion som returnerar hur mycket minne applikationen har allokerat? Trodde det fanns i Applicaton eller Environment, men jag hittar inte tillbaka till den.

Nån som vet?


Svara

Sv: Threading problem

Postades av 2004-10-04 14:01:28 - Patrik Löwendahl

[Minnesläcka vid fill]


Svara

Sv: Threading problem

Postades av 2004-10-05 09:17:13 - Andreas Paulsson

Borde man inte se till att man synkroniserar arbetartråden med GUI-tråden? Fär mig som kommer från C++-världen och slagits med trådade applikationer i MFC så vet man hur fel det kan gå (dock oftast först efter leverans :-) ).

Dvs med ett [Begin/End]Invoke på den kontrollen som skall uppdateras (eller behöver man göra det på formuläret eftersom man går via en DataAdapter (eller kan man göra det på en DataAdapter)?

Jag har fått intrycket att WinForms inte är trådsäkrat automatiskt (det är därför som [Begin/End]Invoke finns).

Kan någon guru upplysa oss?

/Andreas


Svara

Sv: Threading problem

Postades av 2004-10-05 10:26:14 - Patrik Löwendahl

Ja du har helt rätt,

man bör inte, även om det ibland är möjligt, uppdatera GUI ifrån en arbetstråd. Det beror på många faktorer, men kort så är det inte "trådsäkert".

På Control klassen finns Invoke och BeginInvoke för att man skall kunna flytta över exekveringen ifrån arbetstråden till huvudtråden och kunna göra uppdateringar på GUI't.

Jag har skrivit en artikel om just det här, den kommer. Men så länge finns kodexemplet här: Programarkivet:Exekvera metoder på rätt tråd.

UPPD: Begin/End Invoke på object som stream osv är för att vi skall slippa skriva trådplumbingen själva, det innebär tex inte att Callback metdoden som körs när invoke är klar på något sätt kör thread marshalling för att exekvera CBn på huvudtråden.


Svara

Sv: Threading problem

Postades av 2004-10-05 15:01:18 - Andreas Håkansson

Ahhh gamla goda ISynchronizeInvoke ;)


Svara

Sv: Threading problem

Postades av 2004-10-05 16:28:21 - Patrik Löwendahl

http://www.cshrp.net/content.aspx?showID=958

Preics *S*, här kommer artikeln.


Svara

Sv: Threading problem

Postades av 2004-10-21 09:58:46 - Johan Almblad

tack alla hjälpsamma!


Svara

Sv: Threading problem

Postades av 2004-10-21 11:24:14 - Andreas Håkansson

Johan,

Var vänlig och markera tråden som <b>Löst</b> och inte som <b>Stängd</b>. En tråd klassa som löst när den ursprungliga frågan fått ett svar som lett till en lösning. Stängd används när man öppnar en tråd som inte fått svar med lösning och man slutar hålla ett öga på tråden.


Svara

Nyligen

  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 871
27 965
271 770
505
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies