473,394 Members | 1,869 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

timer control

I am working on a emulator and need to have time based events. I've tried
to use the timer control and discovered that it runs waaaaaaay slow. I set
the tick frequency to 1, then in the tick event I update a label on my form,
nothing else. just counting in my head I have determined that it take
roughly 14 seconds to get through 1000 ticks or 1 second of the timer.

This really surprises me. I haven't even done any processing yet and the
thing is already slow. Is this typical of this control?

If I wanted to have a loop with time based execution, what is the
appropriate method? This is a windows form app and the emulator is running
in a dialog.

Thanks for any suggestions,
Steve
Dec 15 '05 #1
6 2190
Howdy,

I would skip the windows API because you are going to get that slowness
running in a dialog.
I've noticed that nothing under 20ms in a timer is really accurate
either.

Maybe directX would be better for an emulator?

Otherwise, why not just put your code in a while loop with a sleep
statement?

Steven Nagy

Dec 15 '05 #2

"Steve" <ss*@sss.com> wrote in message
news:u9**************@TK2MSFTNGP11.phx.gbl...
I am working on a emulator and need to have time based events. I've tried
to use the timer control and discovered that it runs waaaaaaay slow. I set
the tick frequency to 1, then in the tick event I update a label on my
form, nothing else. just counting in my head I have determined that it
take roughly 14 seconds to get through 1000 ticks or 1 second of the timer.

This really surprises me. I haven't even done any processing yet and the
thing is already slow. Is this typical of this control?

If I wanted to have a loop with time based execution, what is the
appropriate method? This is a windows form app and the emulator is
running in a dialog.

Thanks for any suggestions,
Steve


No, it doesn't run way slow, the timer interval can't be less than the (HW)
system clock resolution. Some systems have a 10 msec. system clock
resolution while others may have something like 15 msec. That means that a
timer will need at least 10 (or 15) seconds to fire 1000 times. Note that I
said at least, Windows is not a real time OS, so there is no guarantee that
your timer event handler will be called at the exact time the timer fires,
the call may get delayed some undefined time depending on the current
activity of the system
The same goes for Thread.Sleep(n), don't expect that Sleep(2) will put the
thread asleep for 2 msec., no, it will sleep for at least 10 msec.

Willy.
Dec 16 '05 #3

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:Op***************@TK2MSFTNGP12.phx.gbl...

"Steve" <ss*@sss.com> wrote in message
news:u9**************@TK2MSFTNGP11.phx.gbl...
I am working on a emulator and need to have time based events. I've tried
to use the timer control and discovered that it runs waaaaaaay slow. I
set the tick frequency to 1, then in the tick event I update a label on my
form, nothing else. just counting in my head I have determined that it
take roughly 14 seconds to get through 1000 ticks or 1 second of the
timer.

This really surprises me. I haven't even done any processing yet and the
thing is already slow. Is this typical of this control?

If I wanted to have a loop with time based execution, what is the
appropriate method? This is a windows form app and the emulator is
running in a dialog.

Thanks for any suggestions,
Steve


No, it doesn't run way slow, the timer interval can't be less than the
(HW) system clock resolution. Some systems have a 10 msec. system clock
resolution while others may have something like 15 msec. That means that a
timer will need at least 10 (or 15) seconds to fire 1000 times. Note that
I said at least, Windows is not a real time OS, so there is no guarantee
that your timer event handler will be called at the exact time the timer
fires, the call may get delayed some undefined time depending on the
current activity of the system
The same goes for Thread.Sleep(n), don't expect that Sleep(2) will put the
thread asleep for 2 msec., no, it will sleep for at least 10 msec.

Willy.


Willy, this makes perfect sense, thanks for the thorough explanation. It
does leave me still with a question, if I don't want to use DirectX like
Steven suggested, how do I implement a time controlled loop?

If the system time has a 10ms resolution (or 15 or whatever), then I can't
count on using that to determine elapsed time. I've never had to do this
before... If yo uhave any suggestions, I would really appreciate them.

Thanks again,
Steve
Dec 16 '05 #4

"Steven Nagy" <le*********@hotmail.com> wrote in message
news:11**********************@o13g2000cwo.googlegr oups.com...
Howdy,

I would skip the windows API because you are going to get that slowness
running in a dialog.
I've noticed that nothing under 20ms in a timer is really accurate
either.

Maybe directX would be better for an emulator?

Otherwise, why not just put your code in a while loop with a sleep
statement?

Steven Nagy


Hi,

Thanks for the suggestion. DirectX would be over kill for this and I also
need to use WinForms for the UI. The sleep statement was interesting, but
then I read Willys post where he says it suffers from the same time
resolution as the timer control.

Thanks again,
Steve
Dec 16 '05 #5

"Steve" <ss*@sss.com> wrote in message
news:em**************@TK2MSFTNGP11.phx.gbl...

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:Op***************@TK2MSFTNGP12.phx.gbl...

"Steve" <ss*@sss.com> wrote in message
news:u9**************@TK2MSFTNGP11.phx.gbl...
I am working on a emulator and need to have time based events. I've
tried to use the timer control and discovered that it runs waaaaaaay
slow. I set the tick frequency to 1, then in the tick event I update a
label on my form, nothing else. just counting in my head I have
determined that it take roughly 14 seconds to get through 1000 ticks or 1
second of the timer.

This really surprises me. I haven't even done any processing yet and
the thing is already slow. Is this typical of this control?

If I wanted to have a loop with time based execution, what is the
appropriate method? This is a windows form app and the emulator is
running in a dialog.

Thanks for any suggestions,
Steve


No, it doesn't run way slow, the timer interval can't be less than the
(HW) system clock resolution. Some systems have a 10 msec. system clock
resolution while others may have something like 15 msec. That means that
a timer will need at least 10 (or 15) seconds to fire 1000 times. Note
that I said at least, Windows is not a real time OS, so there is no
guarantee that your timer event handler will be called at the exact time
the timer fires, the call may get delayed some undefined time depending
on the current activity of the system
The same goes for Thread.Sleep(n), don't expect that Sleep(2) will put
the thread asleep for 2 msec., no, it will sleep for at least 10 msec.

Willy.


Willy, this makes perfect sense, thanks for the thorough explanation. It
does leave me still with a question, if I don't want to use DirectX like
Steven suggested, how do I implement a time controlled loop?

If the system time has a 10ms resolution (or 15 or whatever), then I can't
count on using that to determine elapsed time. I've never had to do this
before... If yo uhave any suggestions, I would really appreciate them.

Thanks again,
Steve


Steve,
If you need to fire a timer at an interval that is smaller than say 20 msec.
you are stuck, even DirectX can't help you with that. Could you please
explain what exactly you want to achieve.

Willy.

Dec 16 '05 #6

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:ew**************@TK2MSFTNGP14.phx.gbl...

"Steve" <ss*@sss.com> wrote in message
news:em**************@TK2MSFTNGP11.phx.gbl...

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:Op***************@TK2MSFTNGP12.phx.gbl...

"Steve" <ss*@sss.com> wrote in message
news:u9**************@TK2MSFTNGP11.phx.gbl...
I am working on a emulator and need to have time based events. I've
tried to use the timer control and discovered that it runs waaaaaaay
slow. I set the tick frequency to 1, then in the tick event I update a
label on my form, nothing else. just counting in my head I have
determined that it take roughly 14 seconds to get through 1000 ticks or
1 second of the timer.

This really surprises me. I haven't even done any processing yet and
the thing is already slow. Is this typical of this control?

If I wanted to have a loop with time based execution, what is the
appropriate method? This is a windows form app and the emulator is
running in a dialog.

Thanks for any suggestions,
Steve
No, it doesn't run way slow, the timer interval can't be less than the
(HW) system clock resolution. Some systems have a 10 msec. system clock
resolution while others may have something like 15 msec. That means that
a timer will need at least 10 (or 15) seconds to fire 1000 times. Note
that I said at least, Windows is not a real time OS, so there is no
guarantee that your timer event handler will be called at the exact time
the timer fires, the call may get delayed some undefined time depending
on the current activity of the system
The same goes for Thread.Sleep(n), don't expect that Sleep(2) will put
the thread asleep for 2 msec., no, it will sleep for at least 10 msec.

Willy.


Willy, this makes perfect sense, thanks for the thorough explanation. It
does leave me still with a question, if I don't want to use DirectX like
Steven suggested, how do I implement a time controlled loop?

If the system time has a 10ms resolution (or 15 or whatever), then I
can't count on using that to determine elapsed time. I've never had to
do this before... If yo uhave any suggestions, I would really appreciate
them.

Thanks again,
Steve


Steve,
If you need to fire a timer at an interval that is smaller than say 20
msec. you are stuck, even DirectX can't help you with that. Could you
please explain what exactly you want to achieve.

Willy.

I'm trying to make a very basic emulator for an embedded device. In
emulating the UI, there are different durations at which things happen.
When I designed the application in my head and on paper, processing tasks
evey millisecond was the cleanest way. I can make it work good enough with
100 ms intervals, I will just have some slight inaccuracies, this is just a
UI emulator, so it's not critical.
Dec 19 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: William Bub | last post by:
Is there an accurate way to create a "stopwatch" good to 1/10 of a second? I'm not sure if I should use the timer control, or some way to access the computer timer. I found the following site...
3
by: David | last post by:
Hi There! I'm using Timer control to record how long my application perform certain tasks. However, apparently Timer control is not doing its' job (i.e. Not firing Tick event) while my...
11
by: Steve Jorgensen | last post by:
I've recently been playing with some UI ideas that require the user of a timer to drive animation. The problem I'm having is that Access routinely stops firing timer events for long periods of...
5
by: Dhilip Kumar | last post by:
Hi all, I have developed a windows service using the windows service project template in VS.NET. I have used three controls in the service, a timer, performance counter and a message queue...
7
by: Noozer | last post by:
I have a timer on a form. It isn't firing at all. I know that the timer is enabled, and that the interval is low (4000, which should be 4 seconds). To ensure the timer wasn't being inadvertantly...
2
by: vinay | last post by:
Hi I must be missing some obvious point, but can someone let me know how do I add a windows.forms.timer control to a form at run time Private TM as new windows.forms.time Dim sForm as for ...
7
by: RobKinney1 | last post by:
Hello, Wow...I have one for you all and hopefully I am not understanding this timer object correctly. I have a timer setup that pulses a connection through a socket every 60 seconds. But it...
4
by: grayaii | last post by:
Hi, I have a simple form that handles all its paint functionality like so: this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); And the entry point to this...
4
by: =?iso-8859-1?B?S2VyZW0gR/xtcvxrY/w=?= | last post by:
Hi, i have a main thread an another worker thread. The main Thread creates another thread and waits for the threads signal to continue the main thread. Everything works inside a ModalDialog and...
3
by: Steve | last post by:
Hi All I am using VB.net 2008 and use timer controls within my applications Question Does the code in a Timer control.tick event run on a different thread to the main Application thread (UI...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.