Молчун
Зарегистрирован: 30 December 2007
Сообщения: 32
Примеры кода: 0
|
Re: Сохранение static полей класса между запросами |
27 May 2008 17:16 |
|
|
|
|
Я не понял вопроса, но если нужно сохранить изменяемую статическую переменную только в пределах одного запроса, мое ламерское ИМХО (на случай если не надо сохранять состояние сеанса).
Т.к. в Web для всех потоков создается только один экземляр статической переменной, на каждую статическую переменную поставить атрибут [ThreadStatic] и сделать новую инициализацию для каждого потока. Тогда в разных потоках они будут разными, такими как нужно. Т.е. примерно так:
using System;
using System.Web;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//новая инициализация статических перменных (можно сделать и по-другому)
Win w = new Win();
w.func();
}
}
class Win
{
public class A
{
public List<int> list = new List<int>();
public A() { }
}
[ThreadStatic]
public static A a;
[ThreadStatic]
public static int i;
public void func()
{
i++;
a.list.Add(1);
}
public Win()
{
a = new A();
i = 0;
}
}Кажется, так делать можно. Но может старшие товарищи поправят?
|
|