The source code in this issue is designed for Visual Basic 5.0 and above. It is geared towards the intermediate to advanced programmer. If you have any questions about this issue, please email us at questions@codeoftheweek.com
This issue shows how to implement a timer without requiring a Form or the Timer Control. It accomplishes this task by using a couple of API calls, a class and a module. It is useful for situations where your program might not have a form based interface, such as a background task or a data collection module that run indepently from the user interface.
The Timer class contains two routines for starting (StartTimer) and stopping (StopTimer) the timer. It also exposes an event called TimerEvent. This event is raised to the task that created the Timer Class object. This event behaves the same as the the Timer event that the Timer control raises. For more details about this see the sample code.
Public Function StartTimer(ByVal interval As Long) As Boolean Public Sub StopTimer()
StartTimer returns True if it was able to create a timer otherwise it returns False.
This example can be used to gather some information about your system once every lSeconds seconds for lCount times. Some important things to note. The declaration of tmr includes the WithEvents statement. This allows the Timer class to raise an event in the class or form that the class is created in. It is also important to note that the VBTimer.Timer object must be created using the CreateObject function. This is the only way that the event can be defined and will be raised.
Dim WithEvents tmr As VBTimer.Timer Dim mlCount As Long Public Sub LogIt(lCount As Long, lSeconds As Long) If lSeconds > 60 Then lSeconds = 60 ' Only allow 60 seconds between intervals End If Set tmr = CreateObject("VBTimer.Timer") tmr.StartTimer lSeconds * 1000 mlCount = 0 While mlCount <> lCount DoEvents Wend tmr.StopTimer End Sub Private Sub tmr_TimerEvent() Debug.Print "Ticked..." & mlCount ' log something here. Make memory usage or something ' like that. This can be the start of a background ' information logger. mlCount = mlCount + 1 End Sub
To see the source code for this issue you must be a subscriber to Code of the Week. If you are a subscriber the source code is available at the following address: http://www.codeoftheweek.com/membersonly/bi/0037.html
That should be all you need to do to use the formless timer.
That concludes this issue of COTW. We hope you find the source code useful in your development.
The below describes the ways you can supply us some feedback about COTW. We would like to see our members help mold COTW into the best Visual Basic source code resource available. But to do that we need your feedback about what you like and what you do not like about COTW.
We have entered a partnership with VBXtras to provide many development tools available for sale on our web site. For a limited time we are offering a FREE one year subscription for anyone who purchases any products through our web site. If you are currently shopping for some cool tools, check out http://www.codeoftheweek.com/catalog.html
This area is new and does not yet have all products online. If there is something particular you are looking for (and can't find it on our site), please let us know. We probably can get it for you at a great price!
If you are interested in advertising in COTW please email us at sponsor@codeoftheweek.com Our rates are VERY reasonable, actually they are almost FREE. We reach over three thousand Visual Basic developers each week.
If you have any suggestions for topics you would like to see covered or questions about this issue, please email them to info@codeoftheweek.com or use online feedback form at http://www.codeoftheweek.com/feedback.html.
If you have any source code you would like to submit for possible inclusion in COTW, please fill out our online submission form at http://www.codeoftheweek.com/submission.html.
Thank you for trying Code of the Week for Visual Basic.
Your free trial expires after you receive your fourth issue. If you want to continue to receive Code of the Week you can get 52 issues of COTW for only $19.95. This is a full year of Visual Basic source code and information to help with all your development. So don't wait, subscribe now! The quickest way to subscribe is to jump to our online order form at http://www.codeoftheweek.com/order.html