C# Method bepaalde tijd herhalen?

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Ik ben bezig met een programma te maken imv de Telemeter maar zit even vast :P

Ik heb deze code:

Code: Selecteer alles

        private void CheckDag(DateTime dag)
        {
            switch (dag.DayOfWeek)
            {
                case DayOfWeek.Monday:
                    CheckUren(DateTime.Now, "maandag");
                    break;
                case DayOfWeek.Tuesday:
                    CheckUren(DateTime.Now, "dinsdag");
                    break;
                case DayOfWeek.Wednesday:
                    CheckUren(DateTime.Now, "woensdag");
                    break;
                case DayOfWeek.Thursday:
                    CheckUren(DateTime.Now, "donderdag");
                    break;
                case DayOfWeek.Friday:
                    CheckUren(DateTime.Now, "vrijdag");
                    break;
                case DayOfWeek.Saturday:
                    CheckUren(DateTime.Now, "zaterdag");
                    break;
                case DayOfWeek.Sunday:
                    CheckUren(DateTime.Now, "zondag");
                    break;
            }
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            DateTime dag = DateTime.Now;
            timer2.Interval = 1000;
            CheckDag(dag);
        }
Maar blijkt niet elke 1000ms opnieuw te checken, iemand een idee wat ik fout doe?
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Hierbij een link naar MSDN.
Laatst gewijzigd door ubremoved_539 21 nov 2013, 17:07, in totaal 1 gewijzigd.
elmariachi2920
Plus Member
Plus Member
Berichten: 177
Lid geworden op: 08 aug 2011, 17:09
Uitgedeelde bedankjes: 1 keer
Bedankt: 8 keer

timer2.interval vroeger zetten
nu zet je deze waarde pas als timer2_Tick wordt getriggerd
is er geen "page load" of iets dergelijks?
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

elmariachi2920 schreef:timer2.interval vroeger zetten
nu zet je deze waarde pas als timer2_Tick wordt getriggerd
is er geen "page load" of iets dergelijks?
Sorry ik ben nog maar een beginner in C# :p

Wat bedoel je met "timer2.interval vroeger zetten" ?
En wat is een "page load"?
elmariachi2920
Plus Member
Plus Member
Berichten: 177
Lid geworden op: 08 aug 2011, 17:09
Uitgedeelde bedankjes: 1 keer
Bedankt: 8 keer

ik dacht dat je er al iets meer van wist
mijn excuses

Code: Selecteer alles

        private void timer2_Tick(object sender, EventArgs e)
        {
            DateTime dag = DateTime.Now;
            timer2.Interval = 1000;
            CheckDag(dag);
        }
hierboven staat

Code: Selecteer alles

timer2.interval=1000;
heb je ergens het volgende staan?

Code: Selecteer alles

timer2.start();
je kan best

Code: Selecteer alles

timer2.interval=1000;
voor

Code: Selecteer alles

timer2.start();
zetten
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Doet het ook niet..
Weird ik heb een andere timer die zonder die start werkt :-(

Code: Selecteer alles

private void timer1_Tick(object sender, EventArgs e)
        {            
            timer1.Interval = 1000;
            label1.Text = DateTime.Now.ToLongTimeString();            
        }
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Staat hij enabled ?

Trouwens je kan alles vinden over timers op de URL die ik al gepost heb (heb hem zonet aangepast wat hij was niet klikbaar).
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Jup enable = true.
En bij jouw link vind ik de uitleg nogal onduidelijk :p
Ik gebruik dezelfde site om iets te zoeken maar bij mij is de 'ElapsedEventArgs' iets onbekend :p

Code: Selecteer alles

The type or namespace name 'ElapsedEventArgs' could not be found (are you missing a using directive or an assembly reference?
Edit: ik zie dat je link voor .NET framework 1.1 is, ik zit op 4.5 :p
Nvm het voorbeeld is hetzelfde...
Gebruikersavatar
cptKangaroo
Elite Poster
Elite Poster
Berichten: 3313
Lid geworden op: 18 dec 2004, 14:33
Locatie: 053 Aalst
Uitgedeelde bedankjes: 766 keer
Bedankt: 253 keer
Recent bedankt: 1 keer
Provider
Te Koop forum

Als je die Timer2 manueel gecreëerd hebt, dan ben je waarschijnlijk vergeten om een event handler aan te maken voor Timer2.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Over welke time heb je het?
Timer2 is mijn timer die ik gebruikt die error met evenhandler is de code die naar de pagina verwijst van r2054.

Maar in mijn code in mijn eerste post zie ik dat ik wss de methode verkeerd oproep, heb deze nu aangepast en werkt nog steeds niet dus die timer of methode is verkeerd :?
Laatst gewijzigd door Loeri 21 nov 2013, 18:56, in totaal 1 gewijzigd.
gm123
Elite Poster
Elite Poster
Berichten: 1113
Lid geworden op: 08 maa 2009, 22:27
Uitgedeelde bedankjes: 63 keer
Bedankt: 116 keer

Maar je start hem dus niet expliciet? Werkt het als je dat wel doet? Dus timer2.start() oproepen bv. on load of zo. En zoals al eerder gezegd: uw intervaltijd ook on load al initialiseren (of via de properties) en voor de start.

Als je hem er in hebt gesleept zou die handler inderdaad automatisch gemaakt moeten zijn.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

gm123 schreef:Maar je start hem dus niet expliciet? Werkt het als je dat wel doet? Dus timer2.start() oproepen bv. on load of zo. En zoals al eerder gezegd: uw intervaltijd ook on load al initialiseren (of via de properties) en voor de start.

Als je hem er in hebt gesleept zou die handler inderdaad automatisch gemaakt moeten zijn.
Ik heb geen idee wat je met 'on load' bedoelt, bedoel je als het programma start?
Dus "Formnaam_Load" ? Daar heb ik alleen: CheckDag(DateTime.Now); staan, moet ik daar Timer2.start(); zetten?
Zou wel raar zijn aangezien Timer1 zonder die start code wel iets doet?

Edit: ok lijkt te werken! :D Alleen roept de timer precies maar 1 keer de method op?
Zoals je in de eerste post ziet check ik steeds met DateTime.now, dus zou toch elke 1000ms en nieuwe tijd moeten zijn?

Ik vergelijk dan in een andere method tussen 2 tijden die werkt( ben ik zeker van :p ).
Heb dus geen idee waarom :?
Laatst gewijzigd door Loeri 21 nov 2013, 19:08, in totaal 4 gewijzigd.
gm123
Elite Poster
Elite Poster
Berichten: 1113
Lid geworden op: 08 maa 2009, 22:27
Uitgedeelde bedankjes: 63 keer
Bedankt: 116 keer

Inderdaad, ik bedoel in de _Load functie. Timers starten automatisch wanneer ze Enabled staan, maar voor de zekerheid kan je altijd eens de start functie oproepen. Als het dan nog niet werkt, dan weet ik het ook niet. :D Misschien toch eens proberen de timer opnieuw er in te slepen, misschien dat er iets is misgelopen met de evenhandler.

Het is misschien handig om eens een basic tutorial reeks van C# en .NET te volgen vooraleer je al 'echte' programma's begint te schrijven.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

gm123 schreef: Het is misschien handig om eens een basic tutorial reeks van C# en .NET te volgen vooraleer je al 'echte' programma's begint te schrijven.
Ik zit momenteel op Howest in het eerste jaar van informatica en krijg dus nu voor de eerste keer C# .
Wat ik hier al toon zien we daar nog niet eens :roll:
gm123
Elite Poster
Elite Poster
Berichten: 1113
Lid geworden op: 08 maa 2009, 22:27
Uitgedeelde bedankjes: 63 keer
Bedankt: 116 keer

Loeri schreef:Edit: ok lijkt te werken! :D Alleen roept de timer precies maar 1 keer de method op?
Zoals je in de eerste post ziet check ik steeds met DateTime.now, dus zou toch elke 1000ms en nieuwe tijd moeten zijn?
Haal die timer2.interval toekenning eens uit je timer2_Tick functie , die is daar sowieso niet nodig. Om te kijken of je timer effectief om de seconde afgaat kan je er een simpele console output zetten met Console.WriteLine("hallo\n"). Dan krijg je voor elke timer tick hallo te zien in je output window en weet je zeker dat hij afgaat. Werkt denk ik wel enkel wanneer je het programma runt in Debug mode in Visual Studio.

Allez, het gaat om het idee. Roep iets op waarvan je écht 100% zeker bent dat het werkt. In jouw functie kunnen nog altijd onvoorziene fouten zitten, in iets simpel zoals bv. console output niet.

Edit: ik denk dat het Debug.WriteLine is dat je moet gebruiken voor tekst output in een winforms programma, weet het niet meer vanbuiten. Je krijgt dat dan in je debug window te zien in Visual Studio.
Loeri schreef: Ik zit momenteel op Howest in het eerste jaar van informatica en krijg dus nu voor de eerste keer C# .
Wat ik hier al toon zien we daar nog niet eens :roll:
Als het nog maar je eerste jaar is dan komt dat nog wel hoor, geen paniek.
Laatst gewijzigd door gm123 21 nov 2013, 19:19, in totaal 1 gewijzigd.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

gm123 schreef: Haal die timer2.interval toekenning eens uit je timer2_Tick functie , die is daar sowieso niet nodig. Om te kijken of je timer effectief om de seconde afgaat kan je er een simpele console output zetten met Console.WriteLine("hallo\n"). Dan krijg je voor elke timer tick hallo te zien in je output window en weet je zeker dat hij afgaat. Werkt denk ik wel enkel wanneer je het programma runt in Debug mode in Visual Studio.
Het is een Windows Applicatie, console.write werkt hier niet, heb het met een messagebox.show gedaan en spamt idd vol.
Zal dus ergens in mn method liggen of geef ik de verkeerde variable mee.
gm123 schreef:Als het nog maar je eerste jaar is dan komt dat nog wel hoor, geen paniek.
Ik bedoel dat je over kwam alsof ik er niks van kon en dat we op school met de basis bezig zijn dacht ik om even een stap verder te zetten en niet bvb een jaar te wachten..
gm123
Elite Poster
Elite Poster
Berichten: 1113
Lid geworden op: 08 maa 2009, 22:27
Uitgedeelde bedankjes: 63 keer
Bedankt: 116 keer

Loeri schreef:Ik bedoel dat je over kwam alsof ik er niks van kon en dat we op school met de basis bezig zijn dacht ik om even een stap verder te zetten en niet bvb een jaar te wachten..
Ik bedoelde dat niet slecht hoor, je bent toch ook effectief met de basis bezig? ;) Timers zijn nu niet echt geavanceerd hé. Ook omdat je niet wist wat ik bedoelde met on load, dat zijn echt wel basis dingen in C#.

Wat ik zei geldt nog steeds: of je nu in een informaticaopleiding zit of niet, met tutorials doe je niets mis, integendeel zelfs! En het is zeker goed dat je al voorloopt op wat je op school te zien krijgt! :) Wat ik wil zeggen is dat tutorials (of msdn) al veel van je vragen direct kunnen oplossen, dan hoef je in de toekomst niet steeds te zitten wachten op een antwoord van iemand op een forum. (niet dat we niet graag helpen natuurlijk)
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Ik had al gekeken op MSDN en stackoverflow, maar ik had dus precies die timer over het hoofd gezien :-)
Maar als je een tutorial niet kan volgen of niet echt snapt dan versta je het ook niet he.
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Er zit duidelijk iets fout in je programma.
Probeer eens een lege applicatie te maken en sleep twee timer componenten op je main form.

Maak de event handlers voor beide timers

Code: Selecteer alles

        private void timer1_Tick(object sender, EventArgs e)
        {            
            Debug.WriteLine("timer1");            
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            Debug.WriteLine("timer2");
        }
Maak een event handler voor Activated. Deze event handler wordt aangeroepen als het form actief wordt.
In onderstaand voorbeeld worden de twee timers geactiveerd.

Code: Selecteer alles

        private void Form1_Activated(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            timer2.Enabled = true;
        }
Om de Debug class te kunnen gebruiken moet je de System.Diagnostics namespace toevoegen.

Code: Selecteer alles

using System.Diagnostics;
Druk F5 om je Debug sessie te starten.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Bedankt voor de info!
Maar waar moet ik nu iets zien?

Thx iedereen het werkt nu!
Nu kan ik weer verder sukkelen :P
gm123
Elite Poster
Elite Poster
Berichten: 1113
Lid geworden op: 08 maa 2009, 22:27
Uitgedeelde bedankjes: 63 keer
Bedankt: 116 keer

Loeri schreef:Maar waar moet ik nu iets zien?
In het debug window in visual studio. Dat zie je normaal gezien standaard bij het starten van een debug sessie, en anders aanzetten onder View.
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Loeri schreef:Bedankt voor de info!
Maar waar moet ik nu iets zien?

Thx iedereen het werkt nu!
Nu kan ik weer verder sukkelen :P
Ik denk dat je best eens tijd neemt om een aantal basisprincipes van Visual Studio EN van C# onder de knie te krijgen want anders ga je blijven sukkelen.
Het Output (Debug) window is zowat het eerste scherm dat je nodig hebt :P .
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Astralon schreef:Ik denk dat je best eens tijd neemt om een aantal basisprincipes van Visual Studio EN van C# onder de knie te krijgen want anders ga je blijven sukkelen.
Het Output (Debug) window is zowat het eerste scherm dat je nodig hebt :P .
Moeten we dat dan niet eerst zien op school? :P
We zijn direct begonnen met wat een int, long, string, if, while, for, switch, .. is.
Niet hoe je Visual Studio moet gebruiken...
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Mijn ervaring leert mij dat debuggen en de daarbijhorende tools even belangrijk zijn als het programmeren zelf.
Gebruik daarom een deel van je vrije tijd om vertrouwd te raken met Visual Studio, vooral het debuggen dan.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Loeri schreef:Moeten we dat dan niet eerst zien op school? :P
Om met timers te werken heb je blijkbaar ook niet gewacht tot je het gezien hebt op school :lol:
Loeri schreef:We zijn direct begonnen met wat een int, long, string, if, while, for, switch, .. is.
Niet hoe je Visual Studio moet gebruiken...
De taal is theorie... ik veronderstel dat je ook praktijk krijgt en dat je daar kan leren hoe je een IDE gebruikt.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Astralon schreef:Mijn ervaring leert mij dat debuggen en de daarbijhorende tools even belangrijk zijn als het programmeren zelf.
Gebruik daarom een deel van je vrije tijd om vertrouwd te raken met Visual Studio, vooral het debuggen dan.
r2504 schreef:Om met timers te werken heb je blijkbaar ook niet gewacht tot je het gezien hebt op school :lol:
De taal is theorie... ik veronderstel dat je ook praktijk krijgt en dat je daar kan leren hoe je een IDE gebruikt.
Merci voor de tips zal dit zeker bekijken :wink:
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Bij deze wou ik laten weten dat we 2 weken geleden dus timers hebben gezien en vandaag debugging!
:beerchug:

Ondertussen zit ik al bij mysql en MD5 hashing (login applicatie voor bvb phpbb3) :-D
Raden jullie aan om mijn mysql gegevens in het programma zelf te stoppen of is dit niet veilig?
liber!
Elite Poster
Elite Poster
Berichten: 988
Lid geworden op: 09 apr 2006, 17:48
Twitter: nathan_gs
Uitgedeelde bedankjes: 285 keer
Bedankt: 98 keer
Te Koop forum

Loeri schreef: Ondertussen zit ik al bij mysql en MD5 hashing (login applicatie voor bvb phpbb3) :-D
MD5 is absoluut niet (meer) bedoeld voor paswoord encryptie. Hoe je het wel moet doen?
http://stackoverflow.com/questions/4016 ... -passwords (principes gelden ook voor C# en andere talen).

Wat bedoel je juist met "mysql gegevens in het programma zelf te stoppen"?
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Bedankt voor de link en ik bedoel daarmee de gegevens om connectie te maken met mysql database.
Die hashing is nodig om in te loggen met phpbb3.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Iets hardcoded in een programma zetten is nooit een goed idee.

Paswoorden leesbaar in een configuratie file trouwens ook niet.
Gebruikersavatar
Loeri
Premium Member
Premium Member
Berichten: 491
Lid geworden op: 04 sep 2011, 14:32
Uitgedeelde bedankjes: 70 keer
Bedankt: 25 keer

Hoe maak je dan anders een verbinding?
Met http post/request? Of met cookies?

De code voor mysql ziet er zo uit:

Code: Selecteer alles

MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;

myConnectionString = "server=127.0.0.1;uid=root;" +
    "pwd=12345;database=test;";

try
{
    conn = new MySql.Data.MySqlClient.MySqlConnection();
    conn.ConnectionString = myConnectionString;
    conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show(ex.Message);
}
r2504 schreef: Paswoorden leesbaar in een configuratie file trouwens ook niet.
Dat wist ik :P Daarmee dat ik phpbb3 nam om eens te testen met geëncrypteerde paswoorden.
Maar zo te zien blijkt MD5 niet veilig te zijn?
boran_blok
Elite Poster
Elite Poster
Berichten: 1159
Lid geworden op: 09 maa 2011, 16:04
Uitgedeelde bedankjes: 17 keer
Bedankt: 104 keer
Te Koop forum

> Paswoorden leesbaar in een configuratie file trouwens ook niet.

bwoah, eerlijkgezegd zie ik dat wel heel vaak hoor. Het is een kwestie dat je filesysteem secure is hé.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Het is niet omdat je iets vaak ziet dat het ook goed is hé. Ik heb al verschillende security audits meegemaakt waarbij dergelijke dingen op de zwarte lijst (zelfs die die geencrypteerd zijn met een zwak algorithme) komen.
Plaats reactie

Terug naar “Development”