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


Multi-threading problem

Postades av 2006-08-08 06:56:36 - Patrik Ahlberg, i forum c# (c-sharp), Tråden har 6 Kommentarer och lästs av 688 personer

Jag håller på och gör en RSS reader där jag har en TreeView för att visa Folder, Channel och Items. Man kan alltså skapa Folders där man kan placera channels.
Jag har en metod (UpdateChannels) som uppdaterar alla rss-feeds och placerar dess Items i min databas. I slutet av den metoden så anropar den en annan metod (LoadTreeView) som bygger upp TreeView'n från databasen. Jag har också en Timer som anropar UpdateChannels() när den är nere på 0.
Detta funkar bra men...
Updateringsprocessen kan ta ett tag eftersom den kopplar upp sig mot RSS-feeden, plockar ut värden samt också uppdaterar en progressbar jag har längst nere i min Form.
Därför skulle jag vilja göra allt detta i en ny tråd så att användaren inte behöver sitta och vänta på allt utan att kunna göra nåt.
Jag antar att jag måste göra en ny tråd när timern kommer till 0 men jag har testat lite och jag får bara felmeddelanden:
"Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on." och har också fått:
"Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke".

Så jag är inte riktigt säker på hur jag ska gå tillväga. Min UpdateChannels() uppdaterar lite labels på min Form och progressbaren och min LoadTreeView() uppdaterar också lite labels och så.

Någon som skulle kunna hjälpa mig?


Svara

Sv: Multi-threading problem

Postades av 2006-08-08 08:13:11 - David Tellander

Kolla in klassen BackgroundWorker i dokumentationen, där finns exempel hur du bör gå till väga.
Anledningen till att du får fel är att det inte är trådsäkert att uppdatera en kontroll från annan tråd än den som skapade kontrollen.


Svara

Sv:Multi-threading problem

Postades av 2006-08-08 09:12:51 - Patrik Ahlberg

Tack för tipset. Kollade igenom dokumentationen och testade en implimentation av deras DoWork och RunWorkerCompleted events.

När timern är 0 kör jag en backgroundWorker1.RunWorkerAsync(); som startar min DoWork.
I min DoWork kör jag min UpdateChannels() och i RunWorkerCompleted kör jag LoadTreeView() om resultatet var ok.

Ta ta! Samma fel. Den klagar på raden
rssProgressBar.Maximum = channels.Channels.Count; (channels är en instans av klassen Channel som jag har i projektet).
Men jag tror att den klagar på progressbaren. Några fler förslag?

Felmeddelande: "Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke"


Svara

Sv: Multi-threading problem

Postades av 2006-08-08 10:06:19 - David Tellander

Du försöker fortfarande uppdatera en kontroll (progressbar) från fel tråd. Lyssna på eventet ProgressChanged från workern och uppdatera progressbaren i den eventhandlern.


Svara

Sv:Multi-threading problem

Postades av 2006-08-08 13:21:06 - östen petersson

http://www.yoda.arachsys.com/csharp/threads/


Svara

Sv: Multi-threading problem

Postades av 2006-08-08 15:43:04 - Mattias Frisk

Eller, så kan du helt enkelt köra en invoke,


public delegate void Update(); // Funktionspekare, skall vara utanför klassen

    public partial class Form1 : Form
    {
        Update FunctionPointer = new Update(UpdateProgress);  // Deklarerar funktionspekaren     

        private void button1_Click(object sender, EventArgs e) // Skapar tråden
        {
           Thread t = new Thread(new ThreadStart(Anotherthread));
           t.Start
        }

       private void Anotherthread()
       { 
          rssProgressBar.Invoke(FunctionPointer); // Invoke, Uppdaterar kontrollen på denna tråd
       }
 
       private void UpdateProgress()
       {
          rssProgressBar.Maximum = channels.Channels.Count;
       }
    }


Skrivet direkt ur huvudet, så du behöver nog ändra lite :)


Svara

Sv:Multi-threading problem

Postades av 2006-08-09 06:26:53 - Patrik Ahlberg

Det kanns som att detta kommer att ta evigheter att fa ordning pa sa jag vantar med det tills nasta version da jag kommer gora om allt fran scratch. Jag har sparat anteckningar fran diskussionen i alla fall och tackar alla som hjalpt till!


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 169
27 953
271 705
792
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