Meddelande

Du befinner dig just nu på en äldre version av Pluggakuten, gamla.pluggakuten.se. Nya Pluggakuten lanserades den 6 februari 2017 och du finner forumet på www.pluggakuten.se.

På gamla.pluggakuten.se kan du fortfarande läsa frågorna och svaren som ställts, men du kan inte skapa ett nytt konto eller nya trådar. Är du redan medlem kan du däremot fortfarande logga in och svara i befintliga trådar. Nya frågor och nytt konto skapar du på det nya forumet, välkommen dit!

c# reader/writer med delad buffer (multitrådning)

oskillz
Medlem

Offline

Registrerad: 2016-04-02
Inlägg: 34

c# reader/writer med delad buffer (multitrådning)

Jag håller på att göra en uppgift i windows forms som går ut på att jag har ett writer objekt som ska skriva en string tecken för tecken till en buffer klass, som endast innehåller ett tecken, samt ett reader objekt som ska läsa vad som finns i buffern. Ska göra dett både med och utan synkronisering.

Min metod for att skriva till buffern ser ut enligt:

Kod:

 public void WriteChar()
        {
            for (int i = 0; i < textToWrite.Length; i++)
            {
                    buffer.AsyncReadWrite = textToWrite[i];     //Sätter bufferns char till textToWrite[i]
            }
        }

Och i min buffer har jag en property som ser ut enligt:

Kod:

 public Char AsyncReadWrite
        {
            get { writerListBox.Invoke(new DisplayDelegate(DisplayString), "Writing" + " " + ch, writerListBox);
                    return ch; }
            set { readerListBox.Invoke(new DisplayDelegate(DisplayString), "Reading" + " " + ch, readerListBox);
                    ch = value; }
        }

Det som jag inte riktigt får grepp om är dock sen när jag i min reader klass ska hämta det som finns i buffern. Reader har en string som är tom som ska fyllas från buffern samt en int count som är längden på resultat stringen. Men jag kan ju inte säga i readern att:

Kod:

 public void ReadChar()
        {
            for (int i = 0; i < count; i++)
            {
                textToFill[i] = buffer.AsyncReadWrite;
            }
        }

Eftersom att man inte kan ge ett index av en string ett nytt värde, finns ingen set property för det.
Någon som kan hjälpa mig på traven här och tipsa om hur jag ska tänka? smile

 
oskillz
Medlem

Offline

Registrerad: 2016-04-02
Inlägg: 34

Re: c# reader/writer med delad buffer (multitrådning)

Okej jag hittade en grej som löste det problemet:

Kod:

 public void ReadChar()
        {
            for (int i = 0; i < count; i++)
            {
                char ch = buffer.AsyncReadWrite;
                StringBuilder sb = new StringBuilder(textToFill);
                sb[i] = ch;
                textToFill = sb.ToString();
            }
        }

Dock så får jag inte ut den första bokstaven i mina listboxar som readern och writern använder, den första gången står det bara "reading" eller "writing" när bufferns AsyncReadWrite property anropas.

 


Sidfot

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Powered by Mattecentrum
 |  Denna sida använder cookies |  Kontakta oss |  Feedback |