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 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.
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?
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?
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
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)
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Timer1.Interval = 5000 Timer1.Enabled = True [Code] ..... How would I take a textbox (textbox2.text) and make it show what part of the interval the timer is on? like how do I watch the timer while its counting?
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.
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.
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 to induce a variable amount of lag in vb.net. System should be noticeably slower. I can raise the CPU usage of the program with infinite loops and some variable creation/assignments, but how can I actually cause lag? I'd like to have an "InvokeLag" sub which will perform an action to slow down the computer, the faster the function is called the faster it lags. The function should be as mundane as possible, not modifying anything or doing anything to cause damage other than simple lag.
How can you trace the amount of memory used by each variable, process in a program? I tried CLR 2.0 but am not sure how to read the results. Are there any really good articles on CLR 2.0 that describes what I am looking for?
dim a as integer = 5 dim b as integer = 1 dim c as integer = 10
What is the most efficient method of determining which variable has the largest value while using the least amount of code? I know this can be done with if statements, but there must be a more elegant way to do it.
OK, after trying to get this working for a couple of days now I decided that I would turn to the experts here. I am trying to create a nested loop with a variable amount of nests. Let me elaborate. I have a program that first asks for the minimum and maximum amount of loops, I currently have a SELECT CASE statement that addresses each level of nesting individually.
Dim cMin As Integer = InputBox("Min") Dim cMax As Integer = InputBox("Max") Dim c1, c2, c3 As Integer
Im trying to add a variable that shows amount of tax deducted in a list box among other output variables. If anyone can help I would like to know how to code the lstResults.Items.Add("-$ " & Tax & " Tax") bracket to display the amount of tax deducted from the total salary wages.
Public Class Form1 'Decalirs Variables Dim Hours As Integer Dim Overtime As Integer
I have a mesurement that could be any random value, just for fun well make that 2440mm i need to divde that by the industry standard of 610mm which comes out at 2440 / 610 = 4
Programicaly written NEWVAL = YVAL / STDVAL
NEWVAL (4) gives me refrence to how many instances I want to append a new line in a txt file I know that I want the first line to say 0,0,0 and the second line to say 0,610,0 the third 0,1220,0 the fourth 0,1830,0 and the last 0,2440,0, though this is easily achived with addition how can I automate vb.net to produce a new write line for each each instace of 610 if the YVAL is user defind.Put in simple terms half would be missing if the YVAL variable is double in length at 4880mm?
I have apps with multiple threads. I never have two threads that write to the same variable, but I do have situations where one thread writes to a variable and another reads from it.Is this safe, thread wise? (talking from an execution standpoint) The practice, seems to work fine, but I don't know what would happen if in the split second if one core was reading the variable, and the other was trying to write to it. Do I need to set up some form of lock out here?
i have a datagridview binded with the datatable via its datasource property....now i want to add the Amount column of the dgv and display the total amount in the textbox,if the amount is greater than a certain value then i want the cell to coloured red so i did this code and it worked great:
Dim i, j As Integer For i = 0 To DataGridView1.RowCount - 1 j += Me.DataGridView1.Rows(i).Cells("Amount").Value Next
[code]....
but my problem is that i want the red colour of the cell to blinkafter every 2 seconds....how to do this?i need to handle the timer tick event for this but i am not able to do this.....
im trying to make a simple program that calculates the time it takes to cover x amount off nautical miles at x amount off knots, the code i have so far is this :
Code:Public Class Form1 Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
[Code]...
so if i say want to cruise 29 miles at 12 knts it gives me an awnser of 2 hours 24.6 mins instead of 2 hours 25. Although i do realise that 2 hrs 24.6 is technicaly right i was wondering if anyone here could help me with getting it into the correct format?
im trying to make a fast food program on which the user will input the amount that he has, then he will check on what he wants, by using check boxes. There are 7 different check boxes with 7 different amounts of money. I have the program somewhat finished (thanks for the people that helped me before) but theres still a couple of things that I still need to get finished but I dont know how to.I need to be able to get how much money the user has (this will be entered threw a text box, I think I accidentally messed this part up, because I cant get it to work right, (theres alreasy a permit amount of money in there and it needs to be what the user enters instead of the permit, 5.59, one) and this will be the maximum amount he can spend, then the user will check on the food he wants (and the program will add the sales tax also) then it will produce an answer saying if you have enough money or if you dont. But what im confused on is how do I get the users amount of money and make it the maximum mount he can spend and make sure it doesnt go over the amount that he has checked.[code]
I have an application with 4 threads. (GUI, Controller, Producer, Consumer) The GUI is self-explanatory. The controller starts the producer and consumer threads after some intial setup. The producer creates items and places them in a free slot in a "ring buffer". The consumer takes items from the "ring buffer" and writes them to disk. The producer creates items at a much higher rate than the consumer. The consumer is IO heavy and IO bound. Currently I am checking a variable in each ring buffer slot to determine if it can be written to.
if Slot.Free then Write Slot.Data To Disk end if
I am not using lock/synclock instead I'm just reading / writing the value of the slot's "free" variable. I don't believe that is correct even though it is a volatile read/write. Is there a better method to read/write this variable? The variable is of type "integer" and is either 0 or 1.
I have a timer running like a scoreboard countdown timer. Is there a way that I can display that same timer into two windows forms (winforms) without resorting to properties?