Avatar billede cool_code Nybegynder
16. september 2006 - 15:28 Der er 4 kommentarer og
1 løsning

Threads in GUI (Visual C# Express 2005)

Hej

Jeg har et eksempel i C# hvor 2 threads genererer hver deres  random værdi og udskriver den via Console.Writeline. Det virker fint i en Console applikation. Jeg har dog svært ved at overføre mit eksempel til en GUI applikation, dvs hvor 2 threads som ovenstående skal opdatere hver deres label i applikationenmed deres random værdi. Dette kan jeg ikke få til at virke, har læst en masse på nettet men kan ikke forstå eksemplerne.

er der nogen derude i cyperspace der kan komme med nogle små eksempler på hvordan GUI opdateres med en Thread Value (jeg håber også det forstås hvad jeg mener)
Avatar billede bulgroz Nybegynder
16. september 2006 - 16:21 #1
Prøv at studere denne vejledning.

http://msdn2.microsoft.com/en-us/library/ms171728.aspx

Det der er tilfældet er at dine random generatorer kører i an anden tråd og du er derfor nødsaget til at lave thread-safe kald  til din Windows Forms control.

Det du især skal bide mærke i er denne metode fra eksemplet, som anvender det pattern du skal bruge

// This method demonstrates a pattern for making thread-safe
        // calls on a Windows Forms control.
        //
        // If the calling thread is different from the thread that
        // created the TextBox control, this method creates a
        // SetTextCallback and calls itself asynchronously using the
        // Invoke method.
        //
        // If the calling thread is the same as the thread that created
        // the TextBox control, the Text property is set directly.

        private void SetText(string text)
        {
            // InvokeRequired required compares the thread ID of the
            // calling thread to the thread ID of the creating thread.
            // If these threads are different, it returns true.
            if (this.textBox1.InvokeRequired)
            {   
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.textBox1.Text = text;
            }
        }
Avatar billede cool_code Nybegynder
16. september 2006 - 17:28 #2
Jeg kigger lige på det....
Avatar billede cool_code Nybegynder
17. september 2006 - 12:17 #3
Hey Bulgroz

Efter et lille kig, cut & paste og tilretning, så virker det nøjagtigt som jeg ønskede. Tak for linket og pointene er dine, du skal bare lige smide et svar.....

/cool_code
Avatar billede bulgroz Nybegynder
17. september 2006 - 16:06 #4
Svar...
Avatar billede cool_code Nybegynder
17. september 2006 - 18:22 #5
Alletiders
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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