Ich habe eine Anwendung erstellt, die regelmäßig einige Aufgaben mit Threads ausführen muss. Ich bin mir nicht sicher, ob dies der beste Weg ist, dies zu tun, also würde ich es wirklich schätzen, wenn jemand einen besseren Weg vorschlagen könnte.Was ist der beste Weg, um einen kontinuierlichen Prozess in einem eigenen Thread auszuführen?
Dies ist die Art, wie ich es tat:
Dies ist die Klasse, die die Funktionen für ein kontinuierliches Verfahren beinhaltet (für inaktive Sitzungen suchen und Ruhe Elemente Reinigung):
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);
}
}
}
Dies ist der Haupt Formular wo der Thread initialisiert wird:
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();
}
Danke!