Visual C#_casovnik
Prikazujem rezultate 1 do 14 od 14

Tema: Visual C#_casovnik

  1. #1
    kostajov@eunet.yu
    Guest

    Podrazumevano Visual C#_casovnik

    Program je pisan u jeziku Visual C#. Program vrsi obradu podataka nekoliko minuta. Dok se vrsi obrada zelim da u Box kontroli svo vreme se pojavljuju podaci o vremenu u sekundama!Kako?
    Hvala!



  2. #2
    Početnik
    Učlanjen
    28.10.2003.
    Poruke
    36
    Reputaciona moć
    0

    Podrazumevano

    nisam probao , pisem iz glave ali trebalo bi da radi.
    dodaj kontrolu tipa timer , podesi enabled=true , interval = 1000.
    pretpostavljam da se box zove myBox i da je inicijalna vrednost teksta "0"

    timer_click(Object sender , EventArgs e)
    {
    myBox.Text=(Convert.ToInt32(myBox.Text)+1).ToStrin g();
    }

    postoji milion drugih nacina da se to uradi , sve zavisi sta ti treba ,
    ako hoces opsirnije - ddjenic@yahoo.com

    Poz!

  3. #3
    Guest

    Podrazumevano

    Sta god da radis i zelis da meris vreme u istom trenutku najbolje je da se drzis najboljeg brojaca vremena, a to je vreme rada kompjutera (od kako je upaljen) u milisekundama. Naprvasis prost algoritam za glavni deo tako da ti se u svakom krugu obrade poziva funkcija koja meri vreme. (ona je vrlo prosta i nece ti oduziti rad, a sigurno ce biti brza od timer kontrole). Evo ti ideje kako treba da ide funkcija (namerno necu da ti pisem kako ide kod ).

    Imas promenljivu u kojoj ces da pamtis koliko je vec proslo (LONG, ne zaboravi da su to ms), u njoj ces na pocetku programa da sacuvas to proteklo vreme pozivom odgovarajuce funkcije (za TickCount), i imaces funkciju koja ce da cita opet vreme i da smesta u novu promenljivu. Napravices razliku izmedju ove promenljive i predjasnje i dobices vreme koje je proteklo u ms i na kraju ces vrednost druge promenljive da smestis u prvu. To je to, posle mozes da pravis sat, da pravis programe zavisne od vremena i tako to.
    POZDRAV

  4. #4
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    mozda je ono prvo ipak bolje jer ce ova milion puta u sekundi da ti osvezi sadrzaj edit boxa, pa ce mozda da trepka malo

  5. #5
    Primećen član
    Učlanjen
    04.03.2004.
    Lokacija
    UK
    Poruke
    558
    Reputaciona moć
    56

    Podrazumevano

    Mala digresija : veze nemam sa .Net , ali pretpostavicu da je message-driven, kao i WinAPI. Ako nije, zanemarite ovo pisanije.

    Dakle, sve ono gore je u redu, ali chovek kazhe da mu obrada traje minutima. Ako ti sistem shalje Timer-poruku npr. svake sekunde, moracesh da je obradish. A necesh je obraditi ako ti se kood sve vreme vrti u toj tvojoj funkciji, tj. ako ne ulagani malo i pusti message-pump-u da obradi svoje (u principu, sve poruke ce stizati, ali bice "zaglavljene"). Ono shto treba da uradish u toj velikoj funkciji je da (ako je u C# moguce) ukoliko imash neki veliki loop, u svakoj iteraciji kazhesh sistemu da "pogura" poruke, kako bi ti Timer-message uopshte i stigao!

  6. #6
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    dobro zapazanje
    stavi u petlji Application.DoEvents
    to ce da ti obradi poruke pristigle u medjuvremenu, ili barem ja tako mislim.
    u delphiju je Application.ProcessMessages, mislim da je ovo u .net-u.
    that sould do the trick

  7. #7
    Guest

    Podrazumevano

    Citat Original postavio stormbringer
    mozda je ono prvo ipak bolje jer ce ova milion puta u sekundi da ti osvezi sadrzaj edit boxa, pa ce mozda da trepka malo
    Da. Kao prvo nece milion puta nego samo 1000
    Salu na stranu, ako ne mozes da stavis najobicniji upit da li je ta razlika veca od hiljadu i da ako nije ne vrsis zamenu promenljivih, a ako jeste onda posaljes vreme cemu vec hoces, onda uzmi kontrolu, definitivno je bolje .
    A Lord British je upravu treba i napomenuti da MORAS da das oduska sistemu da radi i nesto drugo a ne da se smara samo sa tvojim linearnim algoritmom. Jer ako bude radio malo duze bice (NOT RESPONDING) .
    A sto se tice timer kontrole, probaj sta ce vise da smori ionako vec spor program.
    A sta mislis kako ona radi?

  8. #8
    Primećen član
    Učlanjen
    04.03.2004.
    Lokacija
    UK
    Poruke
    558
    Reputaciona moć
    56

    Podrazumevano

    Ybga, kad ste vec pocheli...
    WM_TIMER ima nizak prioritet i NECE okidati 1000x u sekundi, to je samo teorijska vrednost. Timer u Win-u radi u rezoluciji chasovnika na plochi, shto je oko 18Hz. To je najfinija rezolucija koja mozhe da se dobije. Znachi, nije za neka ultra-fina merenja, ali vrshi posao za ovakve stvari. Bolje je prepustiti Windows-u da ti shalje poruke nego da sam merish i rizikujesh da zayebesh neshto.

  9. #9
    Nepoznati
    Guest

    Podrazumevano

    A sta je bolje? Sta ce preciznije izmeriti vreme?

  10. #10
    Primećen član
    Učlanjen
    04.03.2004.
    Lokacija
    UK
    Poruke
    558
    Reputaciona moć
    56

    Podrazumevano

    Shta je brzhe/preciznije :
    Multimedijalni tajmeri u Windowsu ili rdtsc assembler instrukcija na PentiumMMX-u pa na ovamo.

    Za multimedijalne tajmere (PerformanceCounter-e) pogledaj WinAPI help, a za ovo drugo... ipak pogledaj WinAPI za ono prvo, u osnovi i Win koristi ovaj drugi nachin

  11. #11
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    ja mislim da je najpreciznije meriti vreme u ciklusima. naime mozes da dobijes broj ciklusa od ukljucenja racunara (ima ih npr. milijardu ako je procesor na 1ghz) i da podelis sa taktom, tako ces dobiti vreme prilicno tacno.
    kod za delphi (mada se lako portuje) je:

    function GetCPUTick: Int64;
    asm
    DB $0F,$31
    end;

    to je u sustini RDTSC komanda, koja je vec pomenuta valjda
    simple, isn't it

  12. #12
    nepoznati
    Guest

    Podrazumevano

    Samo si napisao kod za ono sto je vec rekao onaj prvi GOST, i to ne ceo.

  13. #13
    Primećen član
    Učlanjen
    04.03.2004.
    Lokacija
    UK
    Poruke
    558
    Reputaciona moć
    56

    Podrazumevano

    GetTickCount() u Windowsu radi na frekvenciji chasovnika. Ovo gore radi na frekvenciji (donekle) CPU-a.
    Ma, pogledajte Performace counter-e, ovo pochinje da smara!

  14. #14
    Primećen član
    Učlanjen
    15.02.2004.
    Lokacija
    Nis-New York
    Poruke
    572
    Reputaciona moć
    56

    Podrazumevano

    to je ceo kod! rezultat ti je tipa Int64 i u njemu se nalazi to sto treba, ako ne verujes probaj

Slične teme

  1. visual C++
    Autor MilanZ u forumu Programiranje
    Odgovora: 1
    Poslednja poruka: 08.04.2005., 20:28
  2. Visual c++ ^ MFC
    Autor u forumu Programiranje
    Odgovora: 2
    Poslednja poruka: 23.12.2003., 16:09
  3. Visual Fox Pro
    Autor **case-problem**Bond u forumu Programiranje
    Odgovora: 0
    Poslednja poruka: 04.11.2003., 21:42
  4. Visual C++
    Autor Malone u forumu Programiranje
    Odgovora: 0
    Poslednja poruka: 31.07.2003., 07:02

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •