У меня есть веб-приложение, которое выполняет следующие действия:
Вы нажимаете кнопку, чтобы создать экземпляр синглтона, который создает поток.Этот поток работает непрерывно, выполняя некоторые HTTP-запросы для сбора данных.Вы можете нажать кнопку остановки, которая вызывает метод Abort () в потоке, и приложение перестает делать HTTP-запросы.Когда я запускаю / останавливаю его вручную, все работает нормально.
Моя проблема возникает, когда я "касаюсь" web.config.Процессор (процесс w3wp.exe) резко возрастает, и веб-сайт перестает отвечать на запросы.Кто-нибудь знает, почему это происходит?Разве обновление web.config не должно сбрасывать все?
Пример кода приведен ниже:
private static MyProcessor mp = null;
private Thread theThread = null;
private string status = STOP;
public static string STOP = "Stopped";
public static string START = "Started";
private MyProcessor()
{}
public static MyProcessor getInstance()
{
if (mp == null)
{
mp = new MyProcessor();
}
return mp;
}
public void Start()
{
if (this.status == START)
return;
this.theThread = new Thread(new ThreadStart(this.StartThread));
this.theThread.Start();
this.status = START;
}
public void Stop()
{
if (this.theThread != null)
this.theThread.Abort();
this.status = STOP;
}
private void StartThread()
{
do
{
try
{
//do some work with HTTP requests
Thread.Sleep(1000 * 2);
}
catch (Exception e)
{
//retry - work forever
this.StartThread();
}
} while (this.status == START);
}