Если это 100 мс, то не беспокойтесь. Ваши пользователи не могут обнаружить задержку в 100 мс.
Edit: некоторые пояснения.
Если я правильно помню, 100 миллисекунд (1/10 секунды) находятся в пределах минимального количества времени, которое человек может воспринимать. Итак, для обсуждения, позвольте мне сказать, что этот 100 мс может быть воспринят пользователями сайта OP, и что стоит повысить производительность на 100 мс. С самого начала я предполагал, что ОП правильно определил эту «долгосрочную» задачу как потенциальный источник улучшения в 100 мкс. Итак, почему я предложил ему проигнорировать это?
Работа с несколькими потоками должным образом непростая и является источником ошибок, которые трудно отследить. Добавление потоков к проблеме обычно не является решением, но скорее является источником других проблем, которые вы просто не нашли сразу (*).
У меня была возможность научиться этому трудному пути, с ошибкой, которую можно было воспроизвести только в самой быстрой системе с восьмью процессорами, доступной в то время, а затем только путем неустанного удара по предмету, одновременно моделируя степень из-за сбоя сети, что привело бы к тому, что сетевые администраторы были бы выстроены и расстреляны, если бы это произошло в реальной жизни. Ошибка оказалась в ядре Unix OS обработки сигналов, и речь шла о расположении нескольких инструкций.
Предоставлено Я никогда не видел ничего плохого с тех пор, я все еще видел, как многие разработчики спорили многопоточными ошибками. С одной стороны, этот вопрос, с одной стороны, требовал «простого выхода» через потоки, а с другой стороны, преимущество составляло всего 100 мс. Поскольку не показалось, что у ОП уже была хорошо протестированная инфраструктура потоковой передачи, мне показалось, что имеет смысл проигнорировать 100 мс или, возможно, повысить производительность каким-то другим способом.
(*) Конечно, есть много обстоятельств, где алгоритм выгодно может быть выполнены параллельно, и выполненные из нескольких потоков, работающий на нескольких ядер. Но это не похоже на то, что ОП имеет такой случай.
.. что я думал, пытаясь побить вас ..: D –
Это сработало (по понятию), но что-то о выполнении этого кода в другом потоке разбило процесс. Я заменил Thread.Sleep, чтобы подтвердить, что у меня, по крайней мере, была правильная механика. Существуют ли какие-либо конкретные вещи ASP.NET, которые выходят из-под удара, когда вы используете этот подход? Например, этот код может читать web.config за кулисами. Это отбросит? – Larsenal
Я получаю всевозможные интересные побочные эффекты. При попытке открыть файл System.Data.SqlClient.SqlConnection не работает сообщение «Ошибка входа в систему для пользователя ...» XYZ ». Интересные вещи для отслеживания. – Larsenal