According to the msdn explanation: system. Threading. Timer is a simple lightweight timer that uses the callback method and is provided by the thread pool thread.
It is not recommended to use Windows Forms because the callback is not performed on the user interface thread.
System. Windows. Forms. Timer is a better choice for Windows Forms.
Windows form timer is a single-threaded component with a precision of 55 ms.
If you need a more precise multi-thread timer, use
Timer class. To obtain the server-based timer function, consider using
System. Threading. Timer, which can cause events and has other functions.
In short, the Timer class in the system. Threading. Timers namespace is mainly used for multithreading. The timer in system. Windows. Forms. Timer is mainly single-threaded, that is, it is mainly used for a form. For example, a system. Windows. Forms. timer can be placed in the main form to dynamically display the current time. The update time per second is displayed in the lower right corner.
Private void timereffectick (Object sender, eventargs E)
{
Lbltime. Text = datetime. Now. tostring ("mm DD, yyyy hh: mm: SS ");
Lbltime. forecolor = color. fromargb (0x2b, 0x47, 0x5b );
}
For socket communication in the main form, a separate thread is required for processing. For example, you can use
System. Threading. Timer periodically sends heartbeat packets. At this time, system. Threading. Timer is only on the thread that monitors heartbeat packets. The following is the sample code:
/// <Summary>
/// Listen to the connection status of the socket
/// If the socket connection is disconnected, reconnect
/// If the socket is in the connection status, the status confirmation packet is sent.
/// </Summary>
Private void listensoccon ()
{
Int interval = 0;
If (configurationmanager. deleetask[ "listensoctime"]! = NULL)
{
Int I = 0;
If (Int. tryparse (configurationmanager. appsettings ["listensoctime"]. tostring (), Out I ))
{
Interval = 1000 * I;
}
Else
{
Interval = 10000;
}
}
// Write down logs
String strouput = string. Format ("enable listening socket connection thread, interval: {0} \ n", interval. tostring ());
// Write the information to the log output file
Dllcomm. tp_writeapplogfileex (dllcomm. g_applogfilename, strouput );
Try
{
// Use timercallback
Delegate the method to be executed by timer
Timercallback timerdelegate = new timercallback (tm_consock );
Timerconsocket = new system. Threading. Timer (timerdelegate, this, 0, interval );
}
Catch (exception E)
{
Strouput = string. Format ("An error occurred while listening to the socket connection status: {0} \ n", E. Message );
// Write the information to the log output file
Dllcomm. tp_writeapplogfileex (dllcomm. g_applogfilename, strouput );
}
}
To learn more about system. Threading. timer and
For details about system. Windows. Forms. Timer, refer to msdn:
Http://msdn.microsoft.com/zh-cn/library/system.threading.timer.aspx;
Http://msdn.microsoft.com/zh-cn/library/system.windows.forms.timer.aspx.