views:

28

answers:

1

Starting my first serious GUI app in C#.

I have a class that is handling and doing lots of things that I can plug methods from my GUI controller class into and get events when it appropriate.

I have several listboxes and other controls I want to update whenever this information is updated. However, I would like to throttle this a bit.

For the controls on my GUI form that would update very often if I let it (each time a delegate fires) should I put a timer that updates perhaps once a second. And with the others simply have them update whenever the class that controls the data flow.

Is this what a professional would do? I hate to use a timer if I can avoid but I am afraid of the form updating like crazy, depending on the circumstances.

+2  A: 

I don't see anything wrong with using a timer. That's what throttling is, essentially - don't allow more than x events per second. The important thing is to have your timer check to make sure that something has changed before blindly updating the UI - you don't want it doing screen updates every half-second for no reason.

So - hook the events like you normally would, but instead of doing an immediate update, set a flag. The timer can check the flag before updating the UI.

Or, if you're a stickler for optimization, have the events start the timer, and have the timer stop itself immediately after an update; that way, your timer isn't running at all unless there has been a recent event.

I can't give a definitive answer to the question of whether or not this is what "a professional" would do, as professionals in this field seem to have wildly different ways of doing many things.

Aaronaught