Index System.timers.timer For When Time Has Elapsed?
Mar 8, 2011
I'm creating a multi-threaded application (although it is not at the moment) which will be connecting to a large number of sockets. I've noticed when a connection cannot be made the connect timeout is rather large, so I am trying to make my own. Here is what I have come up with...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CreateSockets(2)
AssignSockets(0, "192.168.31.2", 80, False, False) 'shouldn't connect
AssignSockets(1, "192.168.1.1", 80, False, False) 'should connect
[code]....
Looking at the timeoutOccured() sub, you can see I'm unsure of how to specify which index to set. Efficiency is important since this will be housing a lot of connections at once. Something else that just came to mind, would .theTimer.Stop reset the tick value on the timer?
I am using timers in a windows service and facing problem that anytime some exception happens ( say i unplug LAN wire from my computer ) service stops running, What i am expecting is that service should keep on running as i am catching generic exception which should catch the exception on one tick event and again work (next tick)when i plug in LAN wire (i am plugging/un plugging ) LAN wire as this service is reading database from LAN so i want to replicate a failover scneario)
When I run my app at first its keeps time accurately for the first minute or so there after it starts loosing seconds, and by the end of the day its minutes behind.I've created a class called ServerTimeTimer that has a timers.timer object that elapses every second and adds a second to a dateTime variable, and a property to retrieve the date time.[code]
I need an accurate timer to interface a Windows application to a piece of lab equipment.I used System.Timers.Timer() to create a timer that ticks every 10 msec, but this clock runs slow. For example 1000 ticks with an interval of 10 msec should take 10 wall-clock seconds, but it actually takes more like 20 wall-clock sec (on my PC). I am guessing this is because System.Timers.Timer() is an interval timer that is reset every time it elapses. Since it will always take some time between when the timer elapses and when it is reset (to another 10msec) the clock will run slow. This probably fine if the interval is large (seconds or minutes) but unacceptable for very short intervals.Is there a function on Windows that will trigger a procedure every time the system clock crosses a 10 msec (or whatever) boundary?
UPDATE: System.Timers.Timer() is extremely inaccurate for small intervals.I wrote a simple program that counted 10 seconds several ways:
Interval=1, Count=10000, Run time = 160 sec, msec per interval=16 Interval=10, Count=1000, Run time = 16 sec, msec per interval=15 Interval=100, Count=100, Run time = 11 sec, msec per interval=110 Interval=1000, Count=10, Run time = 10 sec, msec per interval=1000
It seems like System.Timers.Timer() cannot tick faster that about 15 msec, regardless of the interval setting.Note that none of these tests seemed to use any measurable CPU time, so the limit is not the CPU, just a .net limitation (bug?)For now I think I can live with an inaccurate timer that triggers a routine every 15 msec or so and the routine gets an accurate system time. Kinda strange, but...I also found a shareware product ZylTimer.NET that claims to be a much more accurate .net timer (resolution of 1-2 msec). This may be what I need. If there is one product there are likely others.
Im using the express edition of VB.Net to do my project. I have several threads in my program which run fine. However, im stuck at this problem. I have a button in my form, which if I click I will call ThreadA (works fine), If i keep it pressed for more than 2 sec i need to call ThreadB (doesnt work), and if the time is more than 2 min, i need to stop and send a msg to the user. I have tried the timer to calculate the elapsed time, so the tick function would call the thread. BUT this doesnt work... Im not sure what do to.
2012-03-16 19:15:09Z E System.NullReferenceException: Object reference not set to an instance of an object. at System.Timers.Timer.set_Enabled(Boolean value) at System.Timers.Timer.Stop()
Here's the code:
Timer declared as private member variable. Private _myTimer As System.Timers.Timer Initialize timer method.
[code]....
The timer has to have a value or else the Timer.Stop() call would be throwing the exception. This is a sporadic error and I'm just trying to see if anyone has experienced this before or if anyone has any ideas of what could be causing it. It is occuring in a WinForms application in the event handler for the Elapsed event of the Timer, but it is only occuring sporadically on the users computer. I haven't been able to reproduce the error myself.
I have a problem with the Timer class in that there is a chance that a timer would fire right before you call Dispose() since you will probably call Dispose() from some other thread. You may have something like:
Public Sub TimerTick() Handles itsTimer.Elapsed Do Something End Sub
And then from somewhere else in the code, when your app is done, you call
itsTimer.Dispose()
The only way I can think of doing this is:
Public Sub SomeMethod() SyncLock(itsTimer.SynchronizingObject) itsTimer.Dispose()[code]...
This is not a great thing to do esp. since I am holding a lock on an object I am disposing. I can create my own lock and syncLock on that but is there a simple way?
There is a problem with standard System.Timers.Timer behaviour. The timer raise Elapsed event with some interval. But when time of execution inside Elapsed event handler exceed timer interval then thread pool begin queuing event handling. This is a problem in my case. This is because with my Elapsed event handler I fetch some data from database and doing something with it and finally save results back to database. But data handling should be provided only once. So, is there a way to prevent from queuing elapse events for System.Timers.Timer.
As illustration for this issue you can consider next test program:
[code]...
2) Second way is about SynchronizingObject, but it is a valuable only for Windows form application or required additional development of code for implementing object that would be implements ISynchronizeInvoke interface. More about this way you can find here
Alright, so I'm still working on the slot machine. I have three timers all independently going for my three "wheels" of the slot machine.
My issue, is that I'm trying to make a Stop button to stop each timer one at a time, and I'm not understanding why this code isn't working. The logic completely makes sense, and the first "wheel" stops when I click the button, however, it doesnt appear to stop the other two timers.
I have an application that I'm writing that needs to run 3 different Timers. One that will run every 5 minutes, 1 that will run every hour and 1 that has to run once a day sometime after 5:00 P.M. I know that I can seperate the application into 3 seperate applications and use Windows Scheduled Tasks to perform this however I would prefer to have everything in 1 application and just run the different Sub/Functions off of the appropriate Timer. I'm trying also figure out a way to avoid 2 timers firing at the same time.
What i would like to do is tell the 5 minute timer to run say 2 minutes after every 5 minute mark in the our so the first one would be at 12:07 and then the next would be at 12:12 and so on. The hour timer should run sa at 12:20. The daily one run at say 5:31.Is it possible to use the System.timer or the System.Threading.timer in this way?
I'm trying to work out a program where you can set up a variable amount of timers (like egg timers). Each timer works independently of the other (you can stop a timer, reset another, and so on, and the rest are not effected).I thought of using a single timer and then creating a custom egg timer class to handle the countdown, store the current time, etc, and use a collection of these classes inside a timer event (at the tick, do a for each to reduce the countdown on the classes by some milliseconds).Then I got to thinking: all of these egg timer classes in the collection with the for each loop may cause some accuracy loss (say, I add 50 egg timers).
Does anyone think the accuracy loss for updating all of the egg timers would be too adverse? Should I try running them on separate threads (have not thought about how yet), or will that make much difference?
I am trying to calculate a total cost from an elapsed time. Dependant on how long the time is, this will calculate the total cost. It has to be 3 to every hour. The elapsed time is displayed in label6 in "hh:MM:ss" format and the total cost needs to be displayed in label8.
I have one text box that contains a value for the "Start Time" and another text box that contains a value for the "End Time."Both of the values are expressed in a format for military time (i.e. 1200, 1300, 1430, etc.).When the "End Time" text box loses focus, I would like the "Elasped Time" (expressed in minutes) to appear in a third text box.Seems easy enough...right?Well the problem I'm having is since the first two numbers in military time are base 24 and the last two numbers are base 60, a standard calculation subtracting the "End Time" from the "Start Time" does not yield an accurate result.
display a Decimal (or double) to elapsed time [h]:mm:ss (hours:minutes:seconds)using vb.net?
example:
if you were to type "1.34666666666667" into a cell in Excel then choose Custom Format [h]:mm:ss The result is an elapsed time of "32:19:12". Using the OADate function only runs on a 24 hour clock so this does not work for longer durations unfortunately...
Bit stuck on this one, have seen alot about how to do it just cant seem to get it right. I want to have 2 text boxes with times in them.. at the moment i have them on click events then it just runs a Now for the time and fills the boxes from the system time. But then i want the 3rd box to find the elapsed time from the 2 times in the previous boxes but i just cant seem to figure it out
Bit stuck on this one, have seen alot about how to do it just cant seem to get it right.I want to have 2 text boxes with times in them.. at the moment i have them on click events then it just runs a Now for the time and fills the boxes from the system time.But then i want the 3rd box to find the elapsed time from the 2 times in the previous boxes but i just cant seem to figure it out
I have a very simple StopWatch application in Silverlight. I have the following private properties in my MainPage class: _StopPressed (bool), _TimeStart, _Elapsed (string). I also have a "Start" and "Stop" button. The "Start" button calls a method called UpdateTime that constantly updates _ElapsedTime until _StopPressed is true. When I originally wrote it, UpdateTime would block the UI so I couldn't press the Stop button, so I updated my code to use System.Threading.ThreadPool.QueueUserWorkItem with my UpdateTime method so that it updates _Elapsed on a background thread. That works great at updating the value.However, if I try to set the .Text value of my TextBlock from within UpdateTime(), I get an UnauthorizedAccessException that has to do with one thread accessing the data in another thread.What do I need to do to avoid getting this exception and appropriately update the UI without blocking it?
How long it would take to generate all of the numbers between 1 and X randomly. X=1,000,000 took 6 seconds, and for 10,000,000 took over a minute. Does that sound reasonable?
Experiment stopwatch start count = 0 do while count < x select a random number between 1 and X inclusive have i selected this number before? no-add 1 to count yes - loop stopwatch stop display elapsed time
I made the Do Loop UI un-friendly and ran this from the IDE using CTRL-F5. My PC is 1.8Ghz and has 2GB of memory. I am using VB 2008, .Net 3.5 SP1. Looking for work - Zip 65101 [URL]
how to capture an on/off signal from a relay and count the seconds of elapsed time between the cycles on a com port? Also, which pins on the com port should be used for this?