J'ai créé une application qui doit effectuer périodiquement certaines tâches en utilisant des threads. Je ne suis pas sûr que ce soit la meilleure façon de le faire, donc j'apprécierais vraiment que quelqu'un puisse suggérer un meilleur moyen.Quelle est la meilleure façon d'exécuter un processus continu dans son propre thread?
Ceci est la façon dont je l'ai fait:
Ceci est la classe qui comprend les fonctions pour un processus continu (recherche de sessions inactives et le nettoyage des éléments inactifs):
public class SessionCleaner
{
private SQLWorks sqlWorks;
public SessionCleaner()
{
sqlWorks = new SQLWorks();
}
private void cleanIdleSessions()
{
//this function deletes sessions from database
sqlWorks.CleanIdleSessions(10);
}
//this is an endless loop for executing the cleaning every 5 seconds
public void DoCleanIdleSessions()
{
while(true)
{
cleanIdleSessions();
Thread.Sleep(5000);
}
}
}
C'est la principale formulaire où le thread est initialisé:
public partial class FormMain : Form
{
...
public FormMain()
{
InitializeComponent();
...
startSessionCleaner();
...
}
private void startSessionCleaner()
{
initializeSessionCleanerThread();
sessionCleanerThread.Start();
}
private void initializeSessionCleanerThread()
{
sessionCleaner = new SessionCleaner();
sessionCleanerThread = new Thread(new ThreadStart(sessionCleaner.DoCleanIdleSessions));
}
private void terminateSessionCleanerThread()
{
try
{
sessionCleanerThread.Join(1000);
}
catch(Exception ex)
{
string sDummy = ex.ToString();
}
}
private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
terminateSessionCleanerThread();
}
Merci!