У меня есть огромные данные для запуска, которые занимают очень много времени, поэтому подумал, что Threading может быстро выполнить эту работу для меня.Asp.net - многопоточность в C#
Что я делаю: вызов SQL хранимых процедур из интерфейса ASP.NET и обработка происходит там, и это занимает почти 30 часов.
Что мне нужно: я разделил данные на разные партии и создал соответствующие SP для каждого. Теперь мне нужно, чтобы все SP были запущены одновременно одним щелчком мыши.
Пожалуйста, помогите!
Я использовал приведенный ниже код, но он, похоже, не работает параллельно.
protected void Button3_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(Method1);
Thread t2 = new Thread(Method2);
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
void Method1()
{
for (int i = 0; i < 10000; i++)
{
Response.Write("hello1"+i);
Response.Write("<br>");
}
}
void Method2()
{
for (int i = 0; i < 10000; i++)
{
Response.Write("hello2" + i);
}
}
Конвейер ASP.Net работает в одном потоке и умирает после завершения окончательного рендеринга.В основном это означает, что страницы остаются в живых на сервере, но эти страницы создаются для каждого запроса, используемые для генерации полученного html, а затем освобождаются. Перед тем, как продолжить, ознакомьтесь с документацией, чтобы понять эту модель. Существуют решения (приложение signalR + out-of-iis), но вы должны знать, как работает asp.net вообще раньше. –
Когда вы вызываете 't1.Join', вы сообщаете текущему потоку дождаться завершения t1, поэтому код не работает параллельно – stuartd
Написание 20 000 статей на страницу ASP.NET? Разве вы не хотели бы разбивать страницы или что-то еще? –