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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не переключается текущая культура 
:(
    Опции темы
6atoh
Дата 4.5.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пытаюсь переключить текущую культуру вот таким способом:
Код

        CultureInfo ci = new CultureInfo("ru-RU");
        Thread.CurrentThread.CurrentCulture = ci;
        Thread.CurrentThread.CurrentUICulture = ci;

В отладчике показывает что культура поменялась, но на самом деле при выходе из функции культура опять сбрасывается на первоначальную. Я думаю это из-за того что у текущей культуры св-во IsReadOnly установлено в true.  smile . Как с этим бороться?
PM MAIL ICQ   Вверх
tol05
Дата 5.5.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Нет, все нормально, если ты установил культуру в текущем потоке, значит она будет действительна для всех ф-ций данного потока. Значит при
Цитата(6atoh @  4.5.2007,  19:46 Найти цитируемый пост)
 при выходе из функции культура опять сбрасывается на первоначальную

ты переходишь в другой поток.
Проверь внимательно, поставь в функциях 
Код

Console.WriteLine(Thread.CurrentThread.ManagedThreadId);

и посмотри, в одном ли потоке они выполняются?
 вот код для примера
Код

    class Program
    {
        delegate void Delegate();

        static void Do()
        {
            Console.Write("DO ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        }

        static void Main(string[] args)
        {
            Console.Write("Main ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);

            CultureInfo ci = new CultureInfo("en-US");
            Thread.CurrentThread.CurrentCulture = ci;
            Console.Write("Main ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            F1();
            F2();
            Console.Write("Main ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.ReadLine();

            Delegate del = new Delegate(Do);
            del.BeginInvoke(CallBack, del);
            Console.Write("Main ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
            Console.ReadLine();
        }

        static void CallBack(IAsyncResult ar)
        {
            Console.Write("CallBack ");
            Delegate del = ar.AsyncState as Delegate;
            del.EndInvoke(ar);
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
            Console.ReadLine();
        }

        static void F1()
        {
            Console.Write("F1 ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        }

        static void F2()
        {
            Console.Write("F2 ");
            Console.WriteLine(Thread.CurrentThread.CurrentCulture);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
        }
    }


Как ты видишь, Main, F1 и F2 выполняются в одном потоке, а Do и CallBack - в другом

Это сообщение отредактировал(а) tol05 - 5.5.2007, 09:05


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


Бывалый
*


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

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



Проблема решена
Код

CultureInfo ci = new CultureInfo("ru-RU");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

this.Server.Transfer(this.Request.Path);

PM MAIL ICQ   Вверх
6atoh
Дата 5.5.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



tol05, ты прав, но неужели ASP.NET обрабатывает запросы от одного пользователя каждый раз в новом потоке.
PM MAIL ICQ   Вверх
tol05
Дата 5.5.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Конечно. Пул потоков ASP.NET используется при обработке каждого нового запроса. Берется новый поток (из пула потоков CLR процесса - aspnet_wp.exe для IIS5.х) для его обработки и уже в нем создаются объекты конвейера HTTP (HttpApplication, Page, да и все остальные) smile 
Поэтому кстати еще и существуют пул приложений (HttpApplication объектов). 
Да и асинхронные обработчики используют потоки из пула. 

Все это можно почитать у Оньена ("Основы ASP.NET с примерами на C# Фриц Оньон") или см его статью 
http://www.microsoft.com/rus/msdn/magazine...us_handlers.asp

Это сообщение отредактировал(а) tol05 - 5.5.2007, 17:32


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


Бывалый
*


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

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



tol05, спасибо
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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