簡體   English   中英

同步aspx頁面加載事件

[英]Synchronize aspx Page Load event

我只有一個代碼ASPX頁面,它對數據庫數據進行一些計算。 然后,我已將托管服務器配置為具有預定任務,該任務每天早晨6:00在該頁面上調用一次。 但是,由於網址上存在別名,因此該頁面被調用了兩次。

如何同步頁面加載事件的執行,以避免兩個線程兩次執行相同的操作?

線程的總執行時間約為6/7秒。

感謝您的幫助

我的第一個建議是花更多的精力消除多余的電話。 也就是說,保持同步仍然是一個好主意,因為無論如何該頁面都可能會被外部進程多次調用。 我建議使用類似於“ 鎖定”中發布的內容, 以加載要緩存的數據

您的案例的一個例子:

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>();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM