Avatar billede meilby Nybegynder
18. juni 2003 - 09:17 Der er 22 kommentarer og
1 løsning

UI Threads

Nogen der kender nogen links til en god UI Thread tutorial, synes nemlig ikke jeg kan finde noget om andre end Worker threads....
Avatar billede segmose Nybegynder
18. juni 2003 - 10:15 #1
Hvad mener du med UI Thread? User interface threads?
Avatar billede meilby Nybegynder
18. juni 2003 - 10:32 #2
Jeps User interface threads
Avatar billede segmose Nybegynder
18. juni 2003 - 10:47 #3
Hvordan adskiller UI threads fra almindelige? ellers se for windows http://blacksun.box.sk/tutorials.php/id/150
Avatar billede meilby Nybegynder
18. juni 2003 - 11:00 #4
Det er noget med at med UI Threads kan du skrive ud til dine items i VC++ som jeg skal bruge det til.
Avatar billede segmose Nybegynder
18. juni 2003 - 11:33 #5
Med WC++ må jeg melde pas, hvis ovenstående ikke kan bruges.
Avatar billede meilby Nybegynder
18. juni 2003 - 11:36 #6
Det kan det desværre ikke da det er Consol
Avatar billede bertelbrander Novice
18. juni 2003 - 20:42 #7
Hvad er det du gerne vil vide om UI-threads?
Jeg kender ikke nogen tutorials, men hvis du har spøgsmål til threads kan det godt være at jeg kan svare.
Avatar billede meilby Nybegynder
20. juni 2003 - 08:29 #8
Jeg vil bare gerne vide hvordan man bruger UI Threads, hvordan jeg får dem startet osv.
Avatar billede bertelbrander Novice
20. juni 2003 - 15:23 #9
Har du læst denne:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_Multithreading.3a_.Creating_User.2d.Interface_Threads.asp
Normalt vil jeg ikke anbefale at lave UI-threads, man får i reglen et bedre resultat og et enklere design ved at lave alt UI i main-threaden og så lave det tunge arbejde i worker-threads.
Hvad er det du vil bruge dine UI-threads til.
Avatar billede segmose Nybegynder
23. juni 2003 - 11:18 #10
Der er en god grund til at lave UI i en anden tråd end main, hvis du vil have en højere prioritet for en tråd end for main, da man ikke kan lave det sådan omdefinere du lige trådene så den høje prio bliver main, eller en tråd under main med main der kun venter på at alt afsluttes, og UI bliver så en tråd med lavere prio, men hvorfor der er specielle UI tråd fatter jeg ikke rigtigt.
Avatar billede bertelbrander Novice
23. juni 2003 - 14:37 #11
Grunden til at have UI threads er at disse kan oprette MFC CWnd's og afledte windows/views, der kan blive oprettet og kommunikere som window's/view's i main/app thread.
Avatar billede bertelbrander Novice
24. juni 2003 - 13:51 #12
>segmose
Hvorfor mener du at man ikke kan lave threads der har højere prioritet en main-thread? Det er der så vidt jeg ved muligt.
Avatar billede segmose Nybegynder
25. juni 2003 - 08:23 #13
Fra http://blacksun.box.sk/tutorials.php/id/150

Background:

On a single CPU Windows machine, all threads are kept track of and given a slice of processor time (usually a few milliseconds). Windows will cycle through the list it keeps, pausing and resuming each thread. Once a thread has used up its time on the processor, Windows will pause the thread, record its CPU registers (along with some other data), and, after restoring all its data, activate the next thread. Each thread has two priorities: base and dynamic. The base priority can be changed, however, it cannot be changed to have a priority higher than that of the parent thread. Dynamic priority is the same as the base priority, however, it can be raised or lowered by Windows. Windows chooses which thread to run next based on the thread's dynamic priority. Naturally, threads with a higher dynamic priority run first.
Avatar billede meilby Nybegynder
25. juni 2003 - 08:52 #14
Jeg er ved at prøve på at lave en chat lidt ligende ICQ, så jeg skal hente tekst ud fra socket og skrive det ud i en edit og det kan jeg ikke få en worker thread til, men jeg fatter nada af UI Threads så jeg er lidt lost.
Avatar billede segmose Nybegynder
25. juni 2003 - 08:56 #15
Skal du ikke bare sende nogle passende events fra din worker thread til din main (eller UI) thread?
Avatar billede meilby Nybegynder
25. juni 2003 - 09:19 #16
Jo noget ligende det men jeg kan intet inde fra de worker threads jeg fik lavet mig, men det hvis jeg kan bruge worker threads til det så vil jeg da hellere det da de virker som om de er en del nemmere at bruge.
Avatar billede bertelbrander Novice
25. juni 2003 - 15:45 #17
Du kan sende en message fra din thread med PostThreadMessage, hvis du blot skal sende til din main thread kan du gøre det med:
AfxGetApp()->PostThreadMessage(msg_id, wp, lp);
msg_id er en id som du får fra RegisterWindowMessage, f.ex:
UINT msg_id = RegisterWindowMessage("WhatEverMsg");
wp og lp kan f.ex være en int eller en pointer til en class.
I App'en kan du fange beskeden med ON_REGISTERED_MESSAGE, eller bedre ved at instalere en message hook med SetWindowsHookEx, den hook du skal lave er af typen WH_GETMESSAGE.
Avatar billede bertelbrander Novice
25. juni 2003 - 20:50 #18
>segmose
Jeg kan ikke se noget problem i at give main thread prioriteten THREAD_PRIORITY_LOWEST, og lave en slave thread fra main og give denne prioriteten THREAD_PRIORITY_HIGHES, vil slave thread'en så ikke have prioritet over main thread'en?
Avatar billede bertelbrander Novice
26. juni 2003 - 01:00 #19
Jeg har lagt et lille demo project, der viser hvordan man kan kommunikere mellem en worker-thread og en MFC-app, her:

http://home20.inet.tele.dk/midgaard/t3.zip
Avatar billede segmose Nybegynder
26. juni 2003 - 09:04 #20
Fra ovenstående:

"The base priority can be changed, however, it cannot be changed to have a priority higher than that of the parent thread."

Det fortolker jeg som du ikke kan få højere prio end main, men da jeg ikke har læst MS docu på eller testet det kan jeg fejlfortolke det.
Avatar billede meilby Nybegynder
01. juli 2003 - 19:00 #21
bertelbrander
Tak for hjælpen, vil du oprette et svar så du kan få lidt point.
Avatar billede bertelbrander Novice
01. juli 2003 - 20:13 #22
Svar
Avatar billede segmose Nybegynder
04. juli 2003 - 09:17 #23
http://www.codeproject.com/threads/usingworkerthreads.asp her står en masse om hvordan man bruger worker og UI threads og hvorfor man ikke må bruge worker threads hvis man vil vise noget GUI.
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
Kurser inden for grundlæggende programmering

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