スレッドを使用して定期的にいくつかのタスクを実行するアプリケーションを作成しました。私はこれが最良の方法であるかどうかは分かりませんので、誰かがより良い方法を提案できるかどうか本当に感謝します。独自のスレッドで連続プロセスを実行する最善の方法は何ですか?
これは私がそれをやった方法です:
これは、連続プロセス(非アクティブなセッションを探していて、アイドルのアイテムをクリーニングする)ための機能が含まれていたクラスです。
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);
}
}
}
これがメインですスレッドが初期化されるフォーム:
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();
}
ありがとう!