Umiddelbart er System.Threading namespacet tilgængeligt, men jeg synes at der "mangler" en hel del metoder, så nu er jeg så småt begyndt at tvivle om det overhovedet er muligt...
for(int i = 1; i < 8; i++) { if(i%1 == 0) this.lblWorkStatus.Text += System.DateTime.Now.ToString("ss")+ ", has reached " +i + "\n"; Thread.Sleep(500);
} }
skal såmænd bare have begge tråde til at arbejde, men desværre går min simulator kold, når jeg prøver kører eksemplet??? Der er ingen problemer hvis det køres som en normal win app.
nogen ideer om hvordan jeg kan arbejde med flere tråde ??
Jeg ved ikke meget om CE, men jeg har en iPAQ med PocketPC 2003 og når terminate application er noget man gør under "free memory", så kan jeg ikke rigtigt forestille mig foreground threads holde applikationen i memory.
Lidt googling antyder faktisk at man kan skelne mellem foreground og background threads.
nu kender jeg ikke noget som helst til CF så jeg ved ikke om dette overhoved er relevant jeg forstår heller ikke helt hvad du gør med denne linje Thread thisThread = Thread.CurrentThread;
men når man arbejder med win app og tråde kan man ikke opdatere noget på gui tråden fra en anden tråd man bliver nødt til at kalde Invoke eller BeginInvoke kan være at det har noget med det at gøre
ps. jeg ved at nogle gange så fungerer det alligevel i win app at opdatere fra en anden tråd men det er ikke den rigtige måde at gøre det på
de programmer jeg laver er altid masser af tråde i så jeg pleje altid at lave mine meteder som opdaterer gui'en på denne måde så slipper jeg for at tænke på om de skal invokes når jeg kalder dem
public void _tQueue_onThreadFinished(string tekst) { if(InvokeRequired) { ThreadQue.UpdateThreadStatus del = new FindComputers.ThreadQue.UpdateThreadStatus(_tQueue_onThreadFinished); Invoke(del,new object[]{tekst}); return; } ComputerStatusBar.Panels[4].Text="Shares: "+antalSharesFound+" "+tekst; }
Hej igen lifo - du må undskylde at jeg er lidt langsom i betrækket til at svare :-)
Jeg synes efterhånden at jeg har prøvet alt, men jeg kan simpelthen ikke få det til at køre i det meget simple "PocketPC-projekt" som jeg ville teste det med i VS.NET...
Smide gerne en god sjat point oven i hatten til dig, hvis du kan få det til at køre... Eksempelvis bare på en simpel form, hvor du viser tiden (DateTime.Now) på en label (eller noget i den stil) samtidig med at din Main Thread kører videre...
Jeg skal nemlig bruge det i forbindelse med at applikationen genererer nogle dynamiske komponenter (hvilket tager en smule tid), så brugeren kan se hvor langt tid der er igen af processen.
som sagt så har jeg aldrig lavet noget til CF så jeg er måske ikke til så stor hjælp jeg så i doc at InvokeRequired ikke eksisterer i CF så mit eksempel kan ikke bruges
men jeg biksede et lille eksempel sammen uden brug af invoke det køret fint om jeg holt musen stille men om jeg kom musen over lable't hvor jeg skrev teksten ud så frøs programmet meget mærkeligt ????
Det er præcis det der sker for mig - skidtet fryser i det jeg "aktivere" min anden tråd. men du må da meget gerne poste dit eksempel... ellers er der ikke andet for at jeg må spendere min næste måneds SU på en CF-bog til Windows programmering ;-)
Synes godt om
Ny brugerNybegynder
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.