Threads in C# (Winforms)
Geplaatst: 17 nov 2004, 19:43
Voor't school heb 'k een applicatie moeten maken die random getallen genereert en daarna sorteert.
'k heb het aantal random getallen en 't plafond van die random getallen laten bepalen door de gebruiker, nu 't genereren van random getallen duurt ni lang, maar sorteren met bubblesort daarentegen wel
Nu zou 'k graag in de statusbar onderaan men applicatie iets zetten ala Bezig met sorteren......... waar die puntjes opbouwen en weer verdwijnen na nen tijd en dan terug opbouwen, etc... (code heb 'k al getypt dus da is in orde )
Dus ik zou willen als 'k op sorteren klik dat de Sorteer methode in men bewerking klasse wordt opgeroepen maar terwijl de statusbar wordt aangepast met bovenstaande code.
Hoofdthread = Sorteren van men rij.
Backgroundthread = Progressie puntjes laten zien in statusbar
Sorteren is een static methode in men Bewerking klasse en die Statusbarprogress is een private methode in men form klasse.
app front end:
Ik hoop dat jullie begrijpen waar ik heen wil...
Vraag2: Als er iemand ook ineens weet hoe ge de hoofdthread kunt annuleren zodat ge niet MOET wachten tot het sorteren gedaan is, dan zou 'k da ook graag weten
een streepje code:
HOOFDTHREAD:
BACKGROUNDTHREAD:
code voor de uitvoer van die statusprogress (thread.sleep) doe niks TIJDENS het uitvoeren van de Sorteermethode
Vraag3: Voor thread te maken moet ge nen delegate gebruiken maar die delegate mag in de delegate ThreadStart GEEN parameterlijst hebben, hoe kunde da oplossen dat da wel mag of hoe maakt ge iets aan dat ervoor zorgt da ge nen delegate met parameterlijst kunt gebruiken in iets dat geen parameterlijst heeft, kan gebruikt worden in ThreadStart maar geen parameterlijst heeft.
Andere klasse is geen optie
'k heb het aantal random getallen en 't plafond van die random getallen laten bepalen door de gebruiker, nu 't genereren van random getallen duurt ni lang, maar sorteren met bubblesort daarentegen wel
Nu zou 'k graag in de statusbar onderaan men applicatie iets zetten ala Bezig met sorteren......... waar die puntjes opbouwen en weer verdwijnen na nen tijd en dan terug opbouwen, etc... (code heb 'k al getypt dus da is in orde )
Dus ik zou willen als 'k op sorteren klik dat de Sorteer methode in men bewerking klasse wordt opgeroepen maar terwijl de statusbar wordt aangepast met bovenstaande code.
Hoofdthread = Sorteren van men rij.
Backgroundthread = Progressie puntjes laten zien in statusbar
Sorteren is een static methode in men Bewerking klasse en die Statusbarprogress is een private methode in men form klasse.
app front end:
Ik hoop dat jullie begrijpen waar ik heen wil...
Vraag2: Als er iemand ook ineens weet hoe ge de hoofdthread kunt annuleren zodat ge niet MOET wachten tot het sorteren gedaan is, dan zou 'k da ook graag weten
een streepje code:
HOOFDTHREAD:
Code: Selecteer alles
public static object[] BubbleSort(IVergelijk verg, params object[] aObj)
{
for (int i = 1; i < aObj.Length; i++)
{
for (int j = aObj.Length - 1; j >= i; j--)
{
if (verg.GroterDan(aObj[j-1] , aObj[j]))
{
Wissel (ref aObj[j-1], ref aObj[j]);
}
}
}
return aObj;
}
BACKGROUNDTHREAD:
Code: Selecteer alles
private void StatusPending()
{
do
{
this.statusBarPanel1.Text = "Bezig met sorteren";
//this.statusBarPanel1.Text = " " + sText;
for(int i = 0; i < 10; i++)
{
Thread.Sleep(200);
this.statusBarPanel1.Text += ".";
}
}
while(!bIsDone);
}
code voor de uitvoer van die statusprogress (thread.sleep) doe niks TIJDENS het uitvoeren van de Sorteermethode
Vraag3: Voor thread te maken moet ge nen delegate gebruiken maar die delegate mag in de delegate ThreadStart GEEN parameterlijst hebben, hoe kunde da oplossen dat da wel mag of hoe maakt ge iets aan dat ervoor zorgt da ge nen delegate met parameterlijst kunt gebruiken in iets dat geen parameterlijst heeft, kan gebruikt worden in ThreadStart maar geen parameterlijst heeft.
Andere klasse is geen optie