2011-06-28 10 views
6

Czy mogę polegać na tym, że Task jest zawsze wykonywane w jednym wątku? Może być dowolna, ale powinna być taka sama dla całego ciała, ponieważ potrzebuję prawidłowego ustawienia wątku: Culture..NET Zadanie wykonane w jednym wątku

Task bind = Task.Factory.StartNew(() => 
{ 
    Thread.CurrentThread.CurrentCulture = culture; 

    // do some asp.net binding stuff with automatic 
    // date formatting 

    gridView.DataSource = table; 
    gridView.DataBind(); 
} 

Jeśli nie mogę, czy istnieje jakiś parametr, aby uzyskać takie zachowanie?

Cheers Matthias

+1

Nie jestem przekonany, że wiązanie danych w innym wątku będzie ładnie się odtwarzać ... nie tylko, kontekst http wyłączy się –

+0

Dobrze, nie wiedziałem tego. Odświeżyłem trochę kod tak, aby dane były odbierane asynchronicznie i wiązane w sposób synchroniczny. To właściwa droga, prawda? –

+0

tak, ale tylko wtedy, gdy podczas pobierania jest coś pożytecznego. tj. "rozpocznij asynchronizację", "wykonaj inną czynność", "dołącz asynchronizację", "powiązanie danych" jest w porządku, ale "uruchom asynchronizację", "dołącz asynchronizację", "powiązanie danych" jest bezcelowe. –

Odpowiedz

0

Tak, treść zadania jest wykonywana w jednym wątku, z wyjątkiem przypadku uruchamiania podzadań lub jawnego tworzenia innych wątków (wątku, wątku, itp.).

3

wierzę kod określony dla danego zadania będą wykonywane na jednym wątku - ale może nie być kontynuacją. Byłoby bardzo trudno napisać prawidłowy kod, jeśli zadania były zwinne w wątku w ciele zadania, więc jestem prawie pewien, że wszystko w porządku.

Z drugiej strony Twój kod może być, który stanie się czystszy, jeśli użyjesz kultury wyraźnie w dowolnym miejscu. To może nie być wykonalne w zależności od strony ASP.NET, ale warto rozważyć, jeśli to możliwe.

+0

Dzięki Jon. Próbowałem jawnie przekazać kulturę, ale nie znalazłem sposobu ('Seter DataSource', metoda' DataBind'). Zgadzam się jednak, że byłby to najbardziej elegancki sposób. –

Powiązane problemy