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

Postades av 2006-12-21 10:18:56 - Kristian Kurki, i forum arkitektur, Tråden har 7 Kommentarer och lästs av 1601 personer

Hallå,
jag har skapat ett fönster med 2 tabbar. Ena tabben har en DataGridVeiw den andra har ett grafiskt objekt jag skapar själv. Vid skapandet och ibland under körning läser jag om informationen de bygger på (dvs griden ska populeras om och det grafiskt objektet göras om). Att köra det grafiskt objektet i en tråd var inga problem första gången. Däremot när jag försöker att rita om objektet så får jag ett Cross thread access control fel (för att grundobjektet inte är skapat i samma tråd) Samma fel får jag när jag försökker cleara och populera om DataGridViewn så slår Cross thread access controlen in och säger att tråden inte gör det på ett säkert sätt. Då gridden/det grafiska objektet inte visas eller anropas av något annat när det körs i en tråd så är det ju en "säker" operation.

Vågar jag slå av CheckForIllegalCrossThreadCalls?
Var gör jag det i sådana fall?

Som ni förstår är jag inte så hemma på threading men är väldigt tacksom för hjälp.


Svara

Sv: Threading

Postades av 2006-12-21 10:59:50 - Patrik Löwendahl

Nej du får inte slå av det. Det är ett kontroll system som håller igång fönsterhanteringen.

Läs mer här: http://www.lowendahl.net/content.aspx?cshrpContent=csa31


Svara

Sv: Threading

Postades av 2006-12-21 11:01:46 - Roger Alsing

du ska aldrig uppdatera grafiska saker från trådar.

gdi objekt allokeras per tråd och om du från en tråd försöker göra något som får en kontroll att rita om sig så kan det bli kecka.

det du kan göra är att i din bakgrundstråd lagra ut din upplästa data och sedan marshalla anropet från bakgrundstråden till maintråden och där först binda din nya data till kontrollerna

tex:

void MyThreadLoop()
{
while(appRunning)
{
....
lock(threadData)
{
this.ThreadData = bla;
}
myGrid.BeginInvoke ( SomeMethod); <-- där mashallas anropet över till maintråden
}
}

void SomeMethod()
{
lock(threadData)
{
grdData.yaddayadda = ThreadData;
}
}

dock kommer detta resultera i att det blir lite slöare eftersom kontrollerna får binda om sitt data.
men det får man leva med.

det går ju även göra div kösystem för att slippa locka samma objekt etc.
men det där fungerar iaf.


Svara

Sv:Threading

Postades av 2006-12-21 11:02:18 - Roger Alsing

jäkla Löwis o vinna med 2 minuter ;)


Svara

Sv: Threading

Postades av 2006-12-21 11:21:02 - Patrik Löwendahl

;)

Fast jag tog inte upp ngt om trådsynkronisering. Det är en helt annan disskusion än threadmarshalling :)


Svara

Sv:Threading

Postades av 2006-12-21 11:28:35 - Kristian Kurki

Så förslaget är att lagra den nya informationen i objektet men inte rita ut den (förrän man tex går in på den grafiska tabben) eller har jag missförstått?

Problemet är att det rör sig om ganska mycket data som ska visas på två olika sätt (i tabell och grafiskt) och det tar ca 30 sekunder per tabb att visa det. Därför tänkte jag att den icke aktiva tabben kunde köras i bakgrunden. Harn i andra förslag hur man kan lösa detta?


Svara

Sv: Threading

Postades av 2006-12-21 11:31:38 - Patrik Löwendahl

Nej,

du måsta använda delegater för att skickar över exekveringen av koden som uppdaterar kontrollen till huvudtråden.

Läs min artikel och de referrerade resurserna så ser du hur det hänger ihop.


Svara

Sv:Threading

Postades av 2006-12-21 13:19:54 - Kristian Kurki

Så jag ska skapa och uppdatera koden via delegater (eftersom de inte bryr sig om vart ifrån jag kör koden).

Så för min grafik tab så gör jag en delegat för att ta bort gamla objekt(jag vill/kan inte uppdatera eftersom det kan skilja en hel del) och en delegat för att lägga till de nya. Sen kör jag ändringarna i en tråd men via delegaterna? Och delegaterna ligger i parent klassen till grafikobjektet?


Svara

Nyligen

  • 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
  • 22:31 Slappna av

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 864
27 962
271 767
520
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