Wątki i konsumpcja czasu procesora

0

Chciałem się na początek przywitać ze wszystkimi jako, że to mój pierwszy post tutaj.

Od kilku dni wgryzam się w temat wątków w C# i niby przykłady ładnie działają, jednak w kodzie jak poniżej testowy programik "zjada" ponad 50% czasu procesowa. Maszyna nie jest słaba 1GB RAM, Xeon 2.8

Temat jest tak obszerny, że nie potrafię sam sobie odpowiedzieć czy to normalne zachowanie czy robię jakiś błąd, proszę o podpowiedzi.

 public partial class Form1 : Form
    {
        Thread watek;
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            watek = new Thread(wykonaj_watek);
            watek.Start();
            button2.Enabled = true;
        }

        private void wykonaj_watek()
        {
            for (int i = 0; i < 10000; i++)
            {
                if (this.label1.InvokeRequired)
                {
                    this.Invoke(new EventHandler(delegate { label1.Text = i.ToString(); }));
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (watek.IsAlive) watek.Abort();
            button1.Enabled = true;
            button2.Enabled = false;    
        }

    }
0

no ale tutaj nie dość, że wykonujesz 10000 odmalowań labela to jeszcze musisz te 10000 razy "wejść" z wątku pobocznego w wątek główny i wrócić tylko po to aby znów wejść w wątek główny itd.

Napisz sobie program, który w wątku będzie robił coś, co nie będzie za każdym obrotem pętli odwoływało się do GUI to zobaczysz różnicę

0

Czyli dobrze rozumiem, że sama konstrukcja wątku i sposób odwołania się do kontrolki głównego wątku jest prawidłowy... tyle, że robię to za często? :)

0

tak, gdybyś nie robił tego w wątku to było by szybciej - nie traciłbyś czasu na przełączanie się między wątkiem głównym a pobocznym

0

jak potrzebujesz "przyspieszyc program" bo posiadasz duzo dlugotrwalych obliczen mozesz zainteresowac sie tez biblioteka ktora napisal do tego MS
http://blogs.msdn.com/pfxteam/

0

Dziękuję za podpowiedzi :) Teraz siadać i uczyć się dalej, temat im bardziej się wgłębiam tym bardziej obszerny się zdaje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1