2013-03-06 472 views
1

我正試圖將值存儲在高速緩存中並將其恢復以提高處理時間。當我找回緩存項時,我需要計算該值。但問題是,它並沒有給我存儲在緩存中的原始值。取而代之的是,它給了我從緩存中獲得的最新價值。C#高速緩存未顯示存儲在高速緩存中的原始值

我用以下來模擬我的問題。我第一次將「abc123」存儲在緩存中。然後我將它改爲「def」。但是當我把它拿回來時,它會顯示「def」而不是「abc123」。它應該是這樣嗎?或者我做錯了誰?謝謝。

protected void Page_Load(object sender, EventArgs e) 
{ 
    MyObj abc = (MyObj)Cache["myCache"]; 


    if (abc != null) 
    { 
     Response.Write(abc.MyText); 
     Response.End(); 
     return; 
    }   

    Response.Write(abc);   

    abc = new MyObj() { MyText = "abc123" }; 

    Cache.Insert("myCache", abc, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero); 

    abc.MyText = "def"; 
} 

class MyObj 
{ 
    public string MyText { get; set; } 
} 

回答

1

您正在編輯緩存中的同一對象(引用)。如果您不想要這種行爲,則需要在將對象放入緩存之前克隆該對象。

+0

我認爲緩存對象獨立於原始對象。現在我知道他們緊密結合在一起。我將.Clone或.Copy調用放到我的代碼中,並解決了所有問題。謝謝。 – TTCG 2013-03-06 11:58:16