C# - Problemi i rješenja izdvojena tema

poruka: 2.151
|
čitano: 703.252
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Re: C# - Problemi i rješenja
athlon64 kaže...

Ljudi ovako, želim zaustavit aplikaciju u jednoj liniji a dopustit da se sve prije te linije izvršava,samo da priceka na izvršavanje koda iza te linije par sekundi. Thread.Sleep() ne mogu koristit jer on zabrlokira cili program i baci sve u jedan veliki bug.Dakle program snima zvuk i pušta ga na slušalice onoliko sekundi kasnije koliko je korisnik odredia.Odnosno dio sa snimanjem mora nastavit snimat tih par sekundi dok dio sa playbackom mora pricekat 3-4 sec. Timer također nije upotrebljiv za ovo jer njime samo mogu napravit event koji ce opalit svako par sekundi. A pokušam li dio za playback stavit u taj event sve mi podcrta.

Otvori taj proces u drugom threadu i pauziraj samo taj thread, a glavni thread nek se vrti normalno.

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
16 godina
odjavljen
offline
Re: C# - Problemi i rješenja
athlon64 kaže...

...

process.WaitForExit();?

http://nighthawk-software.blogspot.com/
15 godina
offline
Re: C# - Problemi i rješenja
tnakir kaže...
athlon64 kaže...

Ljudi ovako, želim zaustavit aplikaciju u jednoj liniji a dopustit da se sve prije te linije izvršava,samo da priceka na izvršavanje koda iza te linije par sekundi. Thread.Sleep() ne mogu koristit jer on zabrlokira cili program i baci sve u jedan veliki bug.Dakle program snima zvuk i pušta ga na slušalice onoliko sekundi kasnije koliko je korisnik odredia.Odnosno dio sa snimanjem mora nastavit snimat tih par sekundi dok dio sa playbackom mora pricekat 3-4 sec. Timer također nije upotrebljiv za ovo jer njime samo mogu napravit event koji ce opalit svako par sekundi. A pokušam li dio za playback stavit u taj event sve mi podcrta.

Otvori taj proces u drugom threadu i pauziraj samo taj thread, a glavni thread nek se vrti normalno.

mhm,seems legit.

Samo kako da napravim posebni thread za jedan i za drugi dio programa, i onda sve stavim u taj thread. jer jedan i drugi dio imaju po stranicu koda.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
17 godina
offline
Re: C# - Problemi i rješenja
athlon64 kaže...
tnakir kaže...
athlon64 kaže...

Ljudi ovako, želim zaustavit aplikaciju u jednoj liniji a dopustit da se sve prije te linije izvršava,samo da priceka na izvršavanje koda iza te linije par sekundi. Thread.Sleep() ne mogu koristit jer on zabrlokira cili program i baci sve u jedan veliki bug.Dakle program snima zvuk i pušta ga na slušalice onoliko sekundi kasnije koliko je korisnik odredia.Odnosno dio sa snimanjem mora nastavit snimat tih par sekundi dok dio sa playbackom mora pricekat 3-4 sec. Timer također nije upotrebljiv za ovo jer njime samo mogu napravit event koji ce opalit svako par sekundi. A pokušam li dio za playback stavit u taj event sve mi podcrta.

Otvori taj proces u drugom threadu i pauziraj samo taj thread, a glavni thread nek se vrti normalno.

mhm,seems legit.

Samo kako da napravim posebni thread za jedan i za drugi dio programa, i onda sve stavim u taj thread. jer jedan i drugi dio imaju po stranicu koda.

Pogledaj malo async threadove:

http://msdn.microsoft.com/en-us/library/2e08f6yc(v=vs.71).aspx

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
17 godina
odjavljen
offline
C# - Problemi i rješenja

Probaj u objektu koji još "vrti" nešto svoje hendlati event Application.ApplicationExit. Ako do njega dođe - nekako napravi cancel npr Application.AllowQuit = false; a kad je posao gotov sam pozovi gašenje aplikacije. Ovo govorim napamet, možda je totalno nesuvislo {#}

Freak Show Inc.
 
0 0 hvala 0
17 godina
offline
Re: C# - Problemi i rješenja
athlon64 kaže...

Ljudi ovako, želim zaustavit aplikaciju u jednoj liniji a dopustit da se sve prije te linije izvršava,samo da priceka na izvršavanje koda iza te linije par sekundi. Thread.Sleep() ne mogu koristit jer on zabrlokira cili program i baci sve u jedan veliki bug.Dakle program snima zvuk i pušta ga na slušalice onoliko sekundi kasnije koliko je korisnik odredia.Odnosno dio sa snimanjem mora nastavit snimat tih par sekundi dok dio sa playbackom mora pricekat 3-4 sec. Timer također nije upotrebljiv za ovo jer njime samo mogu napravit event koji ce opalit svako par sekundi. A pokušam li dio za playback stavit u taj event sve mi podcrta.

Nisam 100% siguran ali mislim da bi ti BackgroundWorker mogao pomoci. Radi kao zaseban thread u pozadini, neovisno od ostalih. Uglavom, ovdje imaš bolje objašnjenje http://msdn.microsoft.com/en-us/library/4852et58%28v=vs.95%29.aspx

 

Karma is a funny thing.
13 godina
neaktivan
offline
C# - Problemi i rješenja

//ovako bubam nesto nabrzinu ali nemoj izbacit timer tako jednostavno

//ovako probaj

timer.interval=1000;

int i=0;

int m=0;//bezveze variabla

//tvoj kod prije pauze

 

timer.enabled=true;

while(i<=3)

{

m++;//samo dase nesto događa :D

}

//nastavak tvog koda poslije pauze;

 

 

timer_Tick(EventHandler e)

{ i++

if(i>3)

timer.enabled=false;

 

}Ovako bi ja proba meni ima nekog smisla :D

vlastoručni potpis
 
0 0 hvala 0
15 godina
offline
C# - Problemi i rješenja

obajsnia mi je prijatelj  na kavi kako cu rijesit stvar koristeci timer, probat cu sad to.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Koja je razlika između WF I WPF ?

Buzzzzzzzzzzzzzzzzzzzzzzzzzz
15 godina
offline
Re: C# - Problemi i rješenja
Games 4 life kaže...

Koja je razlika između WF I WPF ?

formsi rade na drugom principu,nisam siguran o cemu se tocno radi al ja sam naucia radit u WPF-u,kazu da je napredniji.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja
Games 4 life kaže...

Koja je razlika između WF I WPF ?

WPF program djeli da dva dijela "korisničko sučelje" i "programsku logiku". Za "ušminkavanje" korisničkog sučelja možeš koristiti Expression Blend.


Ja radim, primarno, WF, ali ni WPF mi nije stran.

17 godina
offline
Re: C# - Problemi i rješenja
karaandrijan kaže...

...

 

athlon64 kaže...

...

Timer je los workaround. Ako zelis to napraviti kako treba, napravi multithreaded aplikaciju.

Inace se async multithreading koristi ako imas nekakav algoritam koji "nesto radi" i izvrsavanje poprilicno traje, a zelis imati funkcionalno i respondajuce sucelje, odnosno main program.

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
15 godina
offline
Re: C# - Problemi i rješenja
tnakir kaže...
karaandrijan kaže...

...

 

athlon64 kaže...

...

Timer je los workaround. Ako zelis to napraviti kako treba, napravi multithreaded aplikaciju.

Inace se async multithreading koristi ako imas nekakav algoritam koji "nesto radi" i izvrsavanje poprilicno traje, a zelis imati funkcionalno i respondajuce sucelje, odnosno main program.

Jasno mi je to sa threadovima ali ima sam jednu jednostavniju ideju s timerom. s obzirom da mi je ubacivanje kompletnog dijela koda za playback u timer komplicirano jer moram pola programa vadit  u šire scopeove, napravia sam string varijablu koja ima vrijednost "stani" a timer nakon 4 sekunde promini tu vrijenost u "kreni" , e sad bi stavia beskonačni for i if-else,odnosno 

 

 

 for (int i = 0; i < 100000000000; i++)

             {

               if (dopustenje == "stani")

              {

               continue;

               }

              else if( dopustenje == "kreni")

              {

              break;

              }

             }

 

 

tako da vrti for te 4 sekunde ,dok on ne promijeni vrijednost u kreni, kad se to dogodi , on ide na break i izađe iz for-a te nastavi program.Problem je šta ovo ne radi xd. Očajan algoritam.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Poruka je uređivana zadnji put čet 5.4.2012 23:26 (athlon64).
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Naravno da to neće radit, time si opteretio CPU i main thread aplikacije na MAX, osim šta ti aplikacija neće moći raditi ništa drugo (ako ovo nije u drugom threadu) imat ćeš nepotreban CPU burst na te 4 sekunde.

Za to što želiš treba se pozabavit threadovima i razdjelit tu tvoju proceduru u više logičkih djelova koji će se paliti po potrebi (ako postaviš logiku), u toj logici timer igra svoju ulogu ali van main threada i ako procedure koje si napisao su također van glavnog threada.

Neznam koji .net koristiš, ako je .NET 2.0 prouči async, background worker i threading, ako je .NET 4.0 preporučak korištenje Threading.Task , svakako bi trebao malo mjenjati logiku aplikacije

16 godina
odjavljen
offline
Re: C# - Problemi i rješenja

Kakav točno proces čekaš da završi? Jel ga pokrećeš sa Process.Start ili...?

http://nighthawk-software.blogspot.com/
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

probaj ovo moje sto sam napisao veceras

vlastoručni potpis
15 godina
offline
Re: C# - Problemi i rješenja
karaandrijan kaže...

probaj ovo moje sto sam napisao veceras

nema smisla za ovo šta radim, ne shvacate u cemu je problem a multithreadingom. Kod je dobre 2 stranice i nije moj, to sam uzea s neta od nekog tipa koji je radia aplikaciju za snimanje i playback ,onda sam ga dobro proučia da znam šta je šta ali mi je solidan komad još uvik nejasan, i kad se ne mogu snač u kodu ne mogu ga ni razdijelit na threadove,evo sad ču vam zalipit program da vidite o čemu se radi

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Poruka je uređivana zadnji put pet 6.4.2012 0:04 (athlon64).
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja
karaandrijan kaže...

probaj ovo moje sto sam napisao veceras

Taj kod neće dobro radit iz razloga koje sam gore naveo, stavio si mu beskonačnu petlju dok se varijabla ne namjesti na vrijednost 3, a može li se ta vrijednost namjestiti na 3 ovisi na koji način radi timer koji mjenja tu varijablu, i osim toga aplikacija će se zamrznuti na te 3 sekunde a možda i beskonačno.

15 godina
offline
C# - Problemi i rješenja

Evo ga, dakle ovo kad se pokrene nudi 2 botuna, jedan počne snimat i to sto snima se cuje na slusalicama, drugi zaustavlja program:

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

using Microsoft.DirectX.DirectSound;

 

using System.Threading;

 

namespace Echo

{

 

 

    public partial class Form1 : Form

    {

        int devbuffer = 0;

        public Form1()

        {

            InitializeComponent();

        }

        string dopustenje = "nemozes";

        void timer_Tick(object sender, EventArgs e)

        {

            dopustenje = "mozes";

        }

 

 

        private void button1_Click(object sender, EventArgs e)

        {

 

 

            if (!StartEcho("Microphone", this)) // change "Input" to something suitable

                MessageBox.Show("No matching Sound Card was found");

            // These parameters are guessed at – owner WAS Native.GetDesktopWindow()

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            IsReady = false;

        }

 

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            IsReady = false; // ensures the playback thread shuts down

        }

 

 

 

        // botch – not sure if these and IsReady are thread safe for multiple threads

        public int _dwCaptureBufferSize, _dwOutputBufferSize, _dwNotifySize;

        public CaptureBuffer _dwCapBuffer;

        public SecondaryBuffer[] _dwDevBuffers;

        public Thread _dwCaptureThread;

 

        public bool IsReady = false;

        // IsReady should be true while you wish to capture and then output the sound.

 

        private bool StartEcho(string captureDescriptor, Control owner)

        {

            // string captureDescriptor – string for eg “Mic”, “Input”

            // Control owner – maybe Window or Form would do for this – was Native.GetDesktopWindow()

            // if windowless application use desktop window as message broker

            // Returns true for setup done and thread started, false for problem

 

            // Choose a Wave format, calculating BlockAlign and AverageBytesPerSecond

 

 

            var format = new WaveFormat

            {

                SamplesPerSecond = 96000,

                BitsPerSample = 16,

                Channels = 2,

                FormatTag = WaveFormatTag.Pcm

            };

 

            // Both of these are calculate for All channels

            // BlockAlign = BytesPerSampleAllChannels, AverageBytesPerSecond = BytesPerSecondAllChannels

            format.BlockAlign = (short)(format.Channels * (format.BitsPerSample / 8));

            format.AverageBytesPerSecond = format.SamplesPerSecond * format.BlockAlign;

 

            // Set the size of input and output buffers

 

            // Multiplier of both delay and minimum buffer size in units of 1/16th secs,

            int NUM_BUFFERS = 2;

 

            // Sets _dwNotifySize to enough bytes for 1/16th of a second, all channels

            // Note that this was 1/8th (ie line ended ‘/ 8);’), and output buffer size = capture size/2

            // But this was changed to allow output buffer size to be a multiple of BlockAlign

            _dwNotifySize = Math.Max(4096, format.AverageBytesPerSecond / (8 * 2));

            // rounds _dwNotifySize to a multiple of BlockAlign (BytesPerSampleAllChannel)

            _dwNotifySize -= _dwNotifySize % format.BlockAlign;

 

            // Capture buffer is looped – when the end is reached, it starts from the beginning again.

            // Capturing one should be twice as large as output – so that when completed capture

            // is being read to output buffer there is still room to for the buffer to keep filling

            // without overwriting the output. I think.

            _dwCaptureBufferSize = NUM_BUFFERS * _dwNotifySize * 2;

            _dwOutputBufferSize = NUM_BUFFERS * _dwNotifySize;

 

            // Create CaptureBufferDescriptor and actual capturing buffer

            // Enumerate all devices, choosing one containing the given string (captureDescriptor)

            var cap = default(Capture);

           var cdc = new CaptureDevicesCollection();

            for (int i = 0; i < cdc.Count; i++)

            {

                if (cdc[i].Description.ToLower().Contains(captureDescriptor.ToLower()))

                {

                    cap = new Capture(cdc[i].DriverGuid);

                    break;

                }

            }

 

            // Check a matching capture device was found

            if (cap == null)

                return false; // no matching sound card/capture device

            {

 

                // Make the description and create a CaptureBuffer accordingly

                var capDesc = new CaptureBufferDescription

                {

                    Format = format,

                    BufferBytes = _dwCaptureBufferSize

               };

 

                _dwCapBuffer = new CaptureBuffer(capDesc, cap);

 

                // Create output device and buffers

 

                // Uses default speakers to output – choose output device in same way as for capturing.

                var dev = new Device();

                // As DirectSound uses any window for a message pump we have to SetCooperativeLevel()

                dev.SetCooperativeLevel(owner, CooperativeLevel.Priority);

 

                // Set GlobalFocus=True if you want echo even if desktop window is not focused.

                var devDesc = new BufferDescription

                {

                    BufferBytes = _dwOutputBufferSize,

                    Format = format,

                    DeferLocation = true,

                    GlobalFocus = true

                };

                // Create two output buffers – this seems to avoid the buffer being locked and written

                // to while it's still playing, helping to avoid a sound glitch on my machine.

                _dwDevBuffers = new SecondaryBuffer[2];

                _dwDevBuffers[0] = new SecondaryBuffer(devDesc, dev);

                _dwDevBuffers[1] = new SecondaryBuffer(devDesc, dev);

 

                // Set autoResetEvent to be fired when it's filled and subscribe to buffer notifications

 

                var _resetEvent = new AutoResetEvent(false);

                var _notify = new Notify(_dwCapBuffer);

                // Half&half – one notification halfway through the output buffer, one at the end

                var bpn1 = new BufferPositionNotify();

                bpn1.Offset = _dwCapBuffer.Caps.BufferBytes / 2 - 1;

                bpn1.EventNotifyHandle = _resetEvent.SafeWaitHandle.DangerousGetHandle();

                var bpn2 = new BufferPositionNotify();

                bpn2.Offset = _dwCapBuffer.Caps.BufferBytes - 1;

                bpn2.EventNotifyHandle = _resetEvent.SafeWaitHandle.DangerousGetHandle();

 

                _notify.SetNotificationPositions(new BufferPositionNotify[] { bpn1, bpn2 });

 

                IsReady = true; // ready to capture sound

 

                // Fire worker thread to take care of messages

                // Note that on a uniprocessor, the new thread may not get any processor time

                // until the main thread is preempted or yields, eg by ending button click event or

                // calling Thread.Sleep(0)

 

                // botch – not sure if these are thread safe for multiple threads

                int offset = 0;

                int devbuffer = 0;

 

                // Make a new thread – as countained in the { }

                _dwCaptureThread = new Thread((ThreadStart)delegate

                // *********************************************************************

                {

 

                   _dwCapBuffer.Start(true); // start capture

 

                    // IsReady – This should be true while you wish to capture and then output the sound.

 

                    while (IsReady)

                    {

                       _resetEvent.WaitOne(); // blocks thread until _dwCapBuffer is half/totally full

                        // Read the capture buffer into an array, and output it to the next DevBuffer

                        var read = _dwCapBuffer.Read(offset, typeof(byte), LockFlag.None, _dwOutputBufferSize);

                        _dwDevBuffers[devbuffer].Write(0, read, LockFlag.EntireBuffer);

 

                        // Update offset

                        offset = (offset + _dwOutputBufferSize) % _dwCaptureBufferSize;

 

                        // Play the sound

                        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();          // Enable the timer

                        timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called

                        timer.Interval = (4000) * (1);              // Timer will tick evert second

                        timer.Enabled = true;

                        timer.Start();

 

 

 

                        _dwDevBuffers[devbuffer].SetCurrentPosition(0);

                        _dwDevBuffers[devbuffer].Play(0, BufferPlayFlags.Default);

                        devbuffer = 1 - devbuffer; // toggle between 0 and 1

 

 

 

 

 

                    }

 

 

                    _dwCapBuffer.Stop(); // stop capture

                    // *********************************************************************

                });

 

                _dwCaptureThread.Start(); // start the new Thread

 

 

 

 

                return true;

            }

        }

 

        private void Reproduce_Click(object sender, EventArgs e)

        {

 

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

 

        }

 

 

        private void textBox1_TextChanged_1(object sender, EventArgs e)

        {

 

        }

 

 

 

 

 

    }

}

 

 

EDIT: ovaj reproduce_click event zanemarite, to sa ja pokušava nešto,nebitno.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Poruka je uređivana zadnji put pet 6.4.2012 0:08 (athlon64).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: C# - Problemi i rješenja

ja sam radio u par navrata i meni je posluzilo svrsi na povaj princip

vlastoručni potpis
15 godina
offline
Re: C# - Problemi i rješenja
karaandrijan kaže...

ja sam radio u par navrata i meni je posluzilo svrsi na povaj princip

a pogledaj ovaj kod gore pa ces vidit da nema veze s icim to sta si napisa.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Može poslužit, ali je vrlo loš princip kojeg se nebi trebalo koristit u praksi.


što se tiče kod-a gore, dali je dio koda od tvog interesa ovaj?:

 

 

                        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();          // Enable the timer

                        timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called

                        timer.Interval = (4000) * (1);              // Timer will tick evert second

                        timer.Enabled = true;

                        timer.Start();

 

 

                        _dwDevBuffers[devbuffer].SetCurrentPosition(0);

                        _dwDevBuffers[devbuffer].Play(0, BufferPlayFlags.Default);

                        devbuffer = 1 - devbuffer; // toggle between 0 and 1

 

15 godina
offline
Re: C# - Problemi i rješenja
vedran984 kaže...

Može poslužit, ali je vrlo loš princip kojeg se nebi trebalo koristit u praksi.


što se tiče kod-a gore, dali je dio koda od tvog interesa ovaj?:

 

 

                        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();          // Enable the timer

                        timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called

                        timer.Interval = (4000) * (1);              // Timer will tick evert second

                        timer.Enabled = true;

                        timer.Start();

 

 

                        _dwDevBuffers[devbuffer].SetCurrentPosition(0);

                        _dwDevBuffers[devbuffer].Play(0, BufferPlayFlags.Default);

                        devbuffer = 1 - devbuffer; // toggle between 0 and 1

 

tako je, te 3 linije puštaju zvuk a ovo poviše je startanje timer-a, međutim event od timera se ne može jednostavno stavit tu na te 3 linije,treba sve izbacit u širi scope,a onda varijable koje se tu koriste budu privatne za neki drugi scope i njih također treba izbacivat ,2. stvar ove linije poviše ovih 3 su iso vezane za playback i ako se samo te 3 stavi u event i izbaci u širi scope one se izvrše i program ide dalje, a event za play se izvršava kasnije, opet je problem jer to nebi treba radi. Jednostavno program treba zaustavit tu i gotovo,sve druge opcije završe kao fail, a probaj pa ces vidit da ne ide.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
15 godina
offline
C# - Problemi i rješenja

ma ovaj program je syeban totalno,pa proučavam način rada, while petlja se vrti,snima djelova od stotinjak milisekundi i onda ih pušta, dakle u iducem ciklusu prošli dio od 100ms više ni ne postoji,ja sam mislia da stvori jedan veliki buffer u koji snima i s kojim ja mogu radit sta ocu.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Re: C# - Problemi i rješenja

Nije sjeban nego je namješten da radi tako, vrlo vjerojatno ima dobar razlog za to, a kako je sve u while petlji kada se buffer od 100 ms napuni on se reproducira i kod sljedećeg ponavljanja se poništava i kreće snimanje ponovo pa reprodukcija i tako u krug.

Stvar se da riješit i proširit na proizvoljno vrijeme ali treba napravit izmjene na više mjesta, ovako na pamet je malo teže pogađat bez sors koda i isprobavanja.

15 godina
offline
Re: C# - Problemi i rješenja
vedran984 kaže...

Nije sjeban nego je namješten da radi tako, vrlo vjerojatno ima dobar razlog za to, a kako je sve u while petlji kada se buffer od 100 ms napuni on se reproducira i kod sljedećeg ponavljanja se poništava i kreće snimanje ponovo pa reprodukcija i tako u krug.

Stvar se da riješit i proširit na proizvoljno vrijeme ali treba napravit izmjene na više mjesta, ovako na pamet je malo teže pogađat bez sors koda i isprobavanja.

moram napravit veliki buffer i onda na isto mjesto na kojem se zvuk sada playback-a nekako lijepit ove male komade u taj veliki bufffer, odnosno umjesto linije za playback stavit

 

velikibuffer += malibuffer , i kroz while ce se to punit, i onda kroz event mogu pustit veliki buffer kad me volja, idem probat.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
17 godina
offline
Re: C# - Problemi i rješenja
athlon64 kaže...
...

Malo je glupo sto koristis tudji kod a ne kuzis kako radi. Poant bi bila da skuzis sto je autor htio reci i onda to implementiras u svoje rijesenje.

Sto se tice "programa od 2 stranice", pa to zapravo nije ni puno.

Najgore sto mozes napraviti za sebe kao programera je ici laksim, a krivim putem.

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
15 godina
offline
Re: C# - Problemi i rješenja
tnakir kaže...
athlon64 kaže...
...

Malo je glupo sto koristis tudji kod a ne kuzis kako radi. Poant bi bila da skuzis sto je autor htio reci i onda to implementiras u svoje rijesenje.

Sto se tice "programa od 2 stranice", pa to zapravo nije ni puno.

Najgore sto mozes napraviti za sebe kao programera je ici laksim, a krivim putem.

ma kuzim kako radi,proucia sam ga par puta, samo nije to ko kad ga sam nakodiraš,onda  se puno lakše snalaziš.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
17 godina
offline
Re: C# - Problemi i rješenja
athlon64 kaže...

ma kuzim kako radi,proucia sam ga par puta, samo nije to ko kad ga sam nakodiraš,onda  se puno lakše snalaziš.

Takodjer - trpanje svega u main() i nije neko rijesenje. Em je nepregledno, em nije po pravilima OOP-a, em je upitna kvaliteta koda etc etc...

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
15 godina
offline
Re: C# - Problemi i rješenja
tnakir kaže...
athlon64 kaže...

ma kuzim kako radi,proucia sam ga par puta, samo nije to ko kad ga sam nakodiraš,onda  se puno lakše snalaziš.

Takodjer - trpanje svega u main() i nije neko rijesenje. Em je nepregledno, em nije po pravilima OOP-a, em je upitna kvaliteta koda etc etc...

slažem se, ali nije neka programčina koju če spasit OOP, da se i ovako snač.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Nova poruka
E-mail:
Lozinka:
 
vrh stranice