Permalänk

Nybörjare C#

Hej, jag är ganska ny i programmerandet och har en liten fråga.

Jag har skapat ett lite program som söker igenom en textfil, men formuläret låser sig när programmet jobbar.
Vad jag har förstått måste jag dela upp programmet i trådar. Har försökt läsa på om det men får det inte att fungera.

Jag har en metod i klassen Search som heter CompareArrays, vilken jag anropar från mitt GUI. CompareArrays tar emot och returnerar en ArrayList.

Så här ser det ut när jag anropar metoden nu:
result = search.CompareArrays(alltext);

Om jag nu skulle vilja starta metoden CompareArrays i en egen tråd, hur gör jag då?

Tack på förhand!

Permalänk
Medlem

Ett tips torde vara att använda en den inbygda trådpoolen som finns se t.ex. följande exempel: http://www.dotnetperls.com/threadpool

Visa signatur

weeeee

Permalänk
Medlem
Skrivet av mounte:

Ett tips torde vara att använda en den inbygda trådpoolen som finns se t.ex. följande exempel: http://www.dotnetperls.com/threadpool

Dock skriver dom att en backgroundworker är mer att rekommendera för en tråd (extra) om gui är inblandat, poolen för flera kortlivade...

Permalänk

Har lite svårt att förstå alla kod på de där sidorna...

Ett problem jag har är att min metod returnerar ett värde, hur får jag ut det om jag anropar metoden i en tråd tex?

Ingen som jag ge ett exempel utifrån koden i mitt huvudinlägg?

Permalänk
Medlem
Skrivet av freke1000:

Ett problem jag har är att min metod returnerar ett värde, hur får jag ut det om jag anropar metoden i en tråd tex?

Ingen som jag ge ett exempel utifrån koden i mitt huvudinlägg?

Det är bättre om du skapar tråden på en djupare nivå. Det låter som om du i dagsläget har

program { gör saker variabel = funktion() fyll textarea med data från variabel gör andra saker } funktion { skapa tråd { räkna ut något och sätt det i returvärde } returnera returvärde }

Du vill ha

program { gör saker skapa textarea sätt textarea till uneditable skapa tråd { räkna ut något och tilldela textarea sätt textarea till editable } gör andra saker }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Trådning är så långt bort från nybörjare man kan komma när det gäller C#, man behöver förstå en hel del programmerings koncept innan man egentligen ska börja med det, men Ifall du vill börja lära dig trådning så finns det en riktig bra site för detta

http://www.albahari.com/threading/

Detta är enbart en del. Sedan hantera just kommunikation mellan trådar en en helt annat. Använder Winforms / WPF så handlar det om asyn /event / delegates. Vet du inte vad något av de är, lär dig om det innan du fortsätter.

I alla fall vad du behöver göra skiljer sig åt beroende på vilken teknik du använder, finns många lösningar också. Men en av dem är att invoka ett event in samma tråd som formuläret ligger i för att ge formuläret information.
Här hittar du blanda annat om Invoke på msdn men som sgat va detta är inget nybörjare område och du bör känna till de andra bitarna först: http://msdn.microsoft.com/en-us/library/a1hetckb.aspx

Visa signatur

Speldator: i7-8700k, 32GB DDR4, RTX2080
Server 1: SB 2500k, MZI -P67GD55, 32GB DDR3, Corsair MX 240GB SSD
Surface Pro 2017, Konsoler: Typ alla, Oculus Rift

Permalänk
Medlem

Håller med MugiMugi, ni börjar prata om trådning och detta vore kanske förvirrande för en nybörjare trots att det är ett korrekt sätt att göra på.

Börja lära sig om grunder som att printa text, ta emot användarinput, ta bort, redigera och lägga till data (databaser eller listor) sen när man väl lärt sig om språket kan man börja på att experimentera med trådning, databaser, filer osv, men innan måste man ha ett humm om vad det är man jobbar med.

Ett programmeringsspråk är som ett språk i sig, att programmera är att du ska skriva en bok i det språket som sen en användare kan läsa och använda. Men vet vi inte hur vi skriver språket så kan vi inte använda det.

Tips är att du läser "Skarp programmering i C#" och att du börjar kolla över youtube videor och läsa annan öppen källkod på Internet.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40