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


Trådbekymmer

Postades av 2005-10-11 22:16:58 - Rasmus Ågren, i forum c# (c-sharp), Tråden har 7 Kommentarer och lästs av 684 personer

Jag vill ha ett program med två trådar som skall snurra så fort det går och samtidigt låta användaren hålla på med programmet.

Nu har jag det såhär:
<code>
public GameEngine()
{
// Creates the thread for the drawing
drawingThread = new Thread(new ThreadStart(drawLoop));

// Creates the thread for the informationCollector
collectorThread = new Thread(new ThreadStart(watch));
}

public void runGame()
{
// Start the drawing thread
drawingThread.Start();

//Start the collector thread
collectorThread.Start();

// Wait for the drawing thread to be initialized
while (!drawingThread.IsAlive);

// Wait for the drawing thread to be initialized
while (!collectorThread.IsAlive);

while (true)
{
// Put the Main thread to sleep
Thread.Sleep(10);
}
}

public void drawLoop()
{
while (true)
{
draw();
Thread.Sleep(10);
}
}
public void watch()
{
while (true)
{
//Gör något annat
Thread.Sleep(10);
}
}

</code>
Men det här låser hela programmet. Hur skall man göra med trådar egentligen?


Svara

Sv: Trådbekymmer

Postades av 2005-10-12 07:43:37 - Johan Djupmarker

Varför har du med detta?

            while (true)
            {
                // Put the Main thread to sleep
                Thread.Sleep(10);
            }


Det stoppar ju huvudtråden... Ta bort det så borde det fungera.

/Johan


Svara

Sv:Trådbekymmer

Postades av 2005-10-12 17:49:31 - Rasmus Ågren

Men om jag tar bort det får jag ett felmeddelande som säger:

An unhandled exception of type 'System.Threading.ThreadStateException' occurred in system.windows.forms.dll

Additional information: Thread is running or terminated; it can not restart.

Jag trodde att Thread.Sleep var typ spm DoEvents i VB men det kanske inte stämmer? Jag vill ju att trådarna skall fortsätta gå även efter metoden är avslutad.


Svara

Sv: Trådbekymmer

Postades av 2005-10-12 18:12:44 - Rasmus Ågren

Nu så väntar jag på att trådarna skall bli klara genom att skriva

<code>
drawingThread.Join();
collectorThread.Join();
</code>

efter det andra. Men de tar fortfarande all datorkraft så att det inte går att göra något. Hur skall man fixa det? Kan man styra hur stor andel av kraften en viss tråd skall få?

När jag gör som jag gör nu så nås aldrig Application.Run är det därför det blir konstigt? Jag kan inte lägga detta efter Application.Run för då händer aldrig detta istället. Hur göra?


Svara

Sv: Trådbekymmer

Postades av 2005-10-12 18:13:08 - Simon Dahlbacka

det där (och den andra) ser skum ut.

			while (!drawingThread.IsAlive);


..är du säker på att dina trådar kommer åt att starta? testa med en kort Sleep eller nåt sånt istället..


Svara

Sv:Trådbekymmer

Postades av 2005-10-12 18:17:41 - Rasmus Ågren

Hej! Nope, det blev ingen skillnad. Tror du det kan vara det där med Application.Run?


Svara

Sv: Trådbekymmer

Postades av 2005-10-12 19:52:34 - Patrik Löwendahl

Du kan med gott mod ta bort While(true) i din runGame metod.

Din huvutråd kommer inte att dö, det ser Application.Run till.

Application.Run startar en s k Message Loop och när din huvudtråd inte har något att göra då vilar den i den message loopen.

dina två andra trådar borde däremot starta och gå in i en infinit loop.

Du måste köra Application.Run för att få en sådan Message loop och få upp ett formulär. Det bör du göra efter du startat dina trådar i det här fallet.


Svara

Sv:Trådbekymmer

Postades av 2005-10-13 12:17:58 - Rasmus Ågren

Ja, det funkade viss att bara ta bort det. Jag vet inte varför jag fick ett felmeddelande innan. Tack för hjälpen!


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

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 570 814
27 960
271 761
5 628
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