Задача .NET выполняется в одном потоке - PullRequest
6 голосов
/ 28 июня 2011

Могу ли я рассчитывать на то, что Task всегда выполняется в одном потоке?Он может быть любым, но он должен быть одинаковым для всего тела, так как мне нужно, чтобы Culture потока был правильно установлен.

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

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

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

Если я не могу, есть ли параметр или такчтобы получить такое поведение?

Ура, Матиас

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Я полагаю, что код, указанный для любой конкретной задачи, будет выполнен в одном потоке, но продолжения могут не быть.Было бы крайне сложно написать правильный код, если бы задачи были бы поточечными в теле задачи , поэтому я почти уверен, что у вас все в порядке.

С другой стороны, вашкод может в конечном итоге стать чище, если вы будете использовать культуру явно там, где это уместно.Это может быть неосуществимо в зависимости от ASP.NET, но стоит подумать, если это возможно.

0 голосов
/ 28 июня 2011

Да, тело задачи выполняется в одном потоке, за исключением случая, когда вы запускаете подзадачи или явно создаете другие потоки (Thread, ThreadPool и т. Д.).

...