[[Property:title|Timers]]
[[Property:weight|1]]
[[Property:uuid|325ac6e6-9660-891c-2605-dbeb621649f0]]
This sample consist in a command line demonstrating the use of the <eiffel>TIMER</eiffel> (Timer) class to generate a periodic callback to a method. The sample creates a <eiffel>TIMER</eiffel> object and passes to it a delegate object. When the <eiffel>TIMER</eiffel> fires, the delegate is invoked, and a static method is called asynchronously by a worker thread in the thread pool. 

==Compiling==

To compile the example:   
# Launch EiffelStudio.
# Click '''Add project'''
# Browse to ''$ISE_EIFFEL\examplesdotnet\threading\timers\''
# Choose ''timers.ecf''
# Choose the location where the project will be compiled, by default the same directory containing the configuration file.
# Click '''Open'''.


==Running==

After you launch the sample, the following output appears: 
<code>
Checking for status updates every two seconds
     <Hit Enter to terminate the sample>
Checking Status.
Checking Status.
Checking Status.
Checking Status.
Checking Status.
...
</code>

When the display is finished, the application wait for you to pressed the return key to finished the application.

==Under the Hood==

This application shows how to use the thread <eiffel>TIMER</eiffel>. The timer is launched:
<code>
            create my_timer.make_with_callback (create {TIMER_CALLBACK}.make (Current, $check_status), Void, 0, 2000)
</code>
and calls the feature <eiffel>check_status</eiffel> that displays the message <code>"Checking Status."</code> every two seconds. 

This sample uses the following .NET types: 
*  <eiffel>TIMER</eiffel> 
*  <eiffel>TIMER_CALLBACK</eiffel> 

==Notes==

This sample is translated from the example located in the Samples\Technologies\Threading\Timers subdirectory of the .NET Framework SDK samples directory of Microsoft Visual Studio .NET.