502尝试使用信号量进行多线程时出错

时间:2015-05-21 15:10:59

标签: c# sql asp.net multithreading semaphore

我试图在我的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);
}

将其上传到我的服务器并尝试访问我的网站后,我收到错误消息: Error message

我按照各个网站上的说明进行操作,包括此处的第一条评论:What is a semaphore?

不知道我做错了什么...... 希望你能帮我解决这个问题..谢谢!

0 个答案:

没有答案