我试图在我的ASP.NET C#网站中使用多线程来创建一个持续的过程,该过程始终检查没有记录30天的用户并从我的数据库中删除它们。
这是代码:
public static Semaphore MultiClean { get; set; }
在我的Code-Behind PreInit功能中:
// Remove users who haven't logged in for more than 30 days
MultiClean = new Semaphore(1, 1);
Cleaner();
清洁功能:
public static void Cleaner()
{
int i = 1;
while (true)
{
Thread thread = new Thread(new ParameterizedThreadStart(RemoveOld));
thread.Start(i);
i++;
}
}
RemoveOld功能:
public static void RemoveOld(object args)
{
MultiClean.WaitOne();
List<User> UserLst = SQLDB.getInstance().returnAllUsers();
for (int i = 0; i < Convert.ToInt32(UserLst.Count); i++)
{
DateTime lastvisit = UserLst[i].lastvisit;
DateTime now = DateTime.Now;
TimeSpan diff = now - lastvisit;
if (diff.Days >= 30)
{
SQLDB.getInstance().DeleteUser(UserLst[i].id);
}
}
Thread.Sleep(30000);
MultiClean.Release(1);
}
将其上传到我的服务器并尝试访问我的网站后,我收到错误消息:
我按照各个网站上的说明进行操作,包括此处的第一条评论:What is a semaphore?
不知道我做错了什么...... 希望你能帮我解决这个问题..谢谢!