Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему удаляється єлемент из кєша ПРЕЖДЕВРЕМЕННО, Почему удаляється єлемент из кєша ПРЕЖДЕ 
:(
    Опции темы
tarasD
Дата 1.6.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.5.2007

Репутация: нет
Всего: 1



Здраствуйте!!!

При запуске приложения у меня создаеться 
Код

Cache.Insert("itemA", itemA, null, DateTime.Now.AddMinutes(60),TimeSpan.Zero,CacheItemPriority.High,new CacheItemRemovedCallback(RemoveCallback1));


и позднее в ф-ции  buttcl когда я извлекаю коллекцию ключей, то среди них itemA не существует, тобто обэкт под этим ключом уже удален из кэша. В чем проблема, если этот об'єкт должен сохраняться в кєше 60 мин????????? Как ето может быть связано с ф-ей  RemoveCallback1


Код

using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Caching;
using System.Web;
using System.Web.Configuration;
using System.Configuration;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;

public class vvv
{
   public int x = 5;
}

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Response.Write("Creating items...1");
            
            string itemA = "itemA";
            string itemB = "itemB";

            Cache.Insert("itemA", itemA, null, DateTime.Now.AddMinutes(60),TimeSpan.Zero,CacheItemPriority.High, new CacheItemRemovedCallback(RemoveCallback1) );
            Cache.Insert("itemB", itemB, null, DateTime.Now.AddMinutes(60), TimeSpan.Zero, CacheItemPriority.High,  new CacheItemRemovedCallback(RemoveCallback1) );
        }
    }
    
    protected void buttcl(object sender, EventArgs e)
    {
        string KeyValue = "";
        foreach (DictionaryEntry item in Cache)
        {
            KeyValue += item.Key + " ";
           
        }
        Response.Write(KeyValue);
    }

    protected void bitt(object sender, EventArgs e)
    {
        Response.Write("Remove itemA");
        Cache.Remove("itemA");
    }
    private void RemoveCallback1(string key, object value, CacheItemRemovedReason reason)
    {
        if ( (key == "itemA" || key == "itemB") && ( (reason.ToString())=="Removed"))
        {
            Cache.Remove("itemA");
            Cache.Remove("itemB");
        }
    
    }
}


M
Mymik
Используй тэги кода.


Это сообщение отредактировал(а) Mymik - 2.6.2007, 10:36
PM MAIL   Вверх
Mymik
Дата 2.6.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(tarasD @  1.6.2007,  22:26 Найти цитируемый пост)
Как ето может быть связано с ф-ей  RemoveCallback1

Он должен перехватывать это событие... вот так вот и связано.

А вот почему удаляется... Одной из причин удаления Cache это недопущение переполнения памяти... Но у вас такие переменные... 
Странно как-то...
Тогда приходит мысль что к твоему web-сайту обращаются несколько человек, ну или хотя бы разные браузеры. И в одно ты вызвал удаление, а в другом это отобразилось...
А второй объект остается в Cache ??? Если да. Тогда 99% того что вызывается удаление какой-либо сторонней программой.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
tarasD
Дата 2.6.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.5.2007

Репутация: нет
Всего: 1



Нет, ето я тестировал на локальном сервере Visual Studio.NET 2005, и в врятли чтобы памяти не хватало, ктому же когда я засылал обьект в кэш таким образом

Код

Cache.Insert("itemA", itemA, null, DateTime.Now.AddMinutes(60),TimeSpan.Zero,CacheItemPriority.High, null );



тобто когда я не использывал ф-цию RemoveCallback1, то не елемент itemA не удалялся...


PM MAIL   Вверх
tol05
Дата 2.6.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



А что это за метод?
Код

protected void bitt(object sender, EventArgs e)    
    {    
        Response.Write("Remove itemA");    
        Cache.Remove("itemA");    
    }


Когда он вызывается? Не он ли удаляет?


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
tarasD
Дата 2.6.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 5.5.2007

Репутация: нет
Всего: 1



Так я ж сказал что я вызываю нажимаю сперва кнопку которая вызывает метод, buttcl который извлекает елементы из кэша.

PM MAIL   Вверх
kedicik
Дата 2.6.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Да ! У меня такая же проблема была. Я тоже заметила это. Особенно когда я сидела в отладчике в VS 2005 и наблюдала этот глюк. Сначала я не ставила время на сохранение в кеше но потом поствила заметив что происходит удаление. Но ничего от этого не изменилось и 60 мин не помогли. - то есть у меня объект в кеше то нет! Я решила что памяти не хватает почему-то.  Хотя больше ничего не загружено было.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.