同步aspx页面加载事件

本文关键字:加载 事件 aspx 同步 | 更新日期: 2023-09-27 18:18:04

我有一个代码只有ASPX页做一些数据库数据的计算。然后我配置了我的主机有一个计划任务,每天在早上6点调用页面一次。但是,由于在web地址上存在别名,该页面被调用了两次。

如何同步页面加载事件的执行,以避免两个线程做同样的事情两次?

线程的总执行时间约为6/7秒。

谢谢你的帮助

同步aspx页面加载事件

我的第一个建议是花更多的精力来消除冗余调用。也就是说,保持同步仍然是一个好主意,因为无论如何,外部进程可能会多次调用该页面。我会推荐一些类似于我在lock中发布的内容来加载数据到缓存

你的例子:

private static object MyDataLoadLock = new object();
public List<object> MyData
{
    get
    {
        return this.Cache["MyDatabaseCalculations"] as List<object>;
    }
    set
    {
        this.Cache["MyDatabaseCalculations"] = value;
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (MyData == null)
    {
        lock (MyDataLoadLock)
        {
            if (MyData == null)
            {
                MyData = GetDatabaseCalculations();
            }
        }
    }
}
private List<object> GetDatabaseCalculations()
{
    System.Threading.Thread.Sleep(6500);
    return new List<object>();
}