Words on my addictions: .NET, Philosophy, Music

22 March 2007

Stop threads gracefuly

Filed under: C# — stefanprodan @ 2:50 pm

Every time you are using threads in your code you’ll need a way to stop them and from what I have been experienced the Thread.Abort() is not a choice. Thread.Abort will allways throw ThreadAbortException and what is worse is that the throw is asynchronous so a simple try/catch will not be helpful. On the Abort method the MSDN tells us that “the thread is not guaranteed to abort immediately, or at all” and better yet “If two calls to Abort come at the same time, it is possible that one call set the state information and the other call executes the Abort. However, an application cannot distinguish this.”.

In order to stop a worker in a graceful way you’ll need to use a volatile member in the worker class. My implementation follows:

ReadyForThreading class:

public abstract class ReadyForThreading
{
private readonly object locker = new object();
private bool stopRequired = false;
private bool isStopped = false;

public bool IsStopped
{
get
{
lock (locker) { return isStopped; }
}
protected set
{
lock (locker) { isStopped = value; }
}
}

public bool IsStopping
{
get
{
lock (locker) { return stopRequired; }
}
}

public void Stop()
{
lock (locker) { this.stopRequired = true; }
}
}

Now all you need to do is design your worker class based on the ReadyForThreading:

Worker example class:

public class SomeWorker : ReadyForThreading
{
public void DoWork(object state)
{
try
{
int i = 0;
while (!base.IsStopping)
{
// do work
Thread.Sleep(2000);
Console.WriteLine(“Working on {0} part 1 loop {1}”,
state.ToString(), i);

if (base.IsStopping)
{
break;
}

//do more work
Thread.Sleep(3000);
Console.WriteLine(“Work part 2 loop ” + i);

i++;
}
}
finally
{
base.IsStopped = true;
}
}
}

Usage example:

SomeWorker worker = new SomeWorker();
Thread th = new Thread(new ParameterizedThreadStart(worker.DoWork));
th.Start(“SomeObject”);
Console.WriteLine(“Press any key to stop the worker”);
Console.ReadLine();
worker.Stop();

kick it on DotNetKicks.com

About these ads

8 Comments »

  1. Продаю XRumer 7.0 (отвязан от основного сервера,привязан к моему)
    Цена 59$
    ICQ 619939074

    Программа полностью работает,запомните номер моц ICQ и через пару дней посмотрите в гугле этот номер,он будет на тысячах сайтах.
    С ним идёт база на 300тыс рус форумов и 2.7 млн. англоязычных.
    После прогона по России Тиц поднимается на 100-200 как минимум и так можно делать с кучей сайтов.

    + программа обучена распознаванию более 40 новых типов графических капчей, включая; частичный список можно посмотреть здесь + ReCaptcha, и зашумлённая капча VBulletin 3.7.3
    + значительно расширены знания программы по текстовым капчам, размер файла textcaptcha.txt увеличен в 2 раза, итого известно более 2000 типов текстовых защит
    + улучшена обработка новых версий VBulletin, IPB, phpBB
    + скачивание персонального ключа xrumer_key.txt более не требуется
    + добавлены новые макросы:
    Stop threads gracefuly « Words on my addictions: .NET, Philosophy, Music – цитировать тайтл страницы
    – цитировать предыдущего оратора
    – вставить контент, который был собран через xgrab.txt
    + расширены возможности самообучения:
    * автоматическое присвоения значения сразу выбранному списку полей одним кликом
    * автоматический перевод через Google Translate иностранных текстов перед полями
    * пометка уже известных полей
    * визуальное обучение текстовой капче
    + добавлены новые режимы рассылки: “только создавать топик”, “пытаться создать топик, если нельзя то ответить в уже существующий” и “отвечать только в существующие”
    + значительно ускорена загрузка программы с ОЧЕНЬ большими базами и отчётами
    + исправлена грубая погрешность в обработке POST-запросов, в которых используется слэш
    + скорректирована логика обработки капчей
    + исправлена ошибка, которая косвенно могла вызывать ошибку “Out of System recources”
    + внесены поправки в логике обработки xgrab.txt и xseek.txt
    + Масс-ПМ обучена работе с модом vbSEO
    + добавлена система варьирования HTTP-заголовков для более сложного вычисления XRumer-а как бота
    + исправлен критический баг с cookies, который мешал нормальной работе с phpBB3 и другими движками
    + улучшено оформление постов для VBulletin некоторых версий
    + инструмент “Удалить повторные ссылки” доработан для фильтрации nodes.txt, при этом автоматически выявляются зеркала сайтов и сохраняются в отчёт mirrors.txt
    + логирование в тестовом режиме в файл Debug\FormFields сделано более подробным и корректным
    + программа обучена распознавать поля с рандомным именем для ввода капчи
    + отчёт “Успешные” теперь более точен
    + повышена общая пробиваемость движка phpBB, в т.ч. последние версии
    + программа обучена обходить текстовую защиту WiKi, создавая и/или редактируя статьи, основной признак ресурсов: inurl:/wiki/index.php?title=
    + внесены коррективы в интерфейс программы
    + увеличен макс.размер файла для фильтрации дублей – до 2 Гб
    + сняты ограничения на макс.размеры ассоциативных файлов (xas.txt, xmessages.txt и т.п.)
    + скорректирована логика обработки полей в соответствии со списком приоритетных разделов
    + программа обучена распознаванию новых типов составных капчей:

    Comment by excessUndidge — 23 February 2011 @ 12:09 am

  2. скачать песню земля в иллюминаторе, скачать прогу для сжатия, скачать фильм достучаться до

    Comment by Eviveinessy — 4 March 2011 @ 12:51 am

  3. Блог супер! статья очень заинтересовала

    Comment by грузчики пермь — 11 March 2011 @ 6:46 am

  4. решение для инвестора http://pamm-investor.ru

    Comment by Irreptarl — 18 March 2011 @ 7:38 pm

  5. уимблдон 2008 финал скачать, скачать драйвер сканер 2448cu pro, моя чужая дочь скачать

    Comment by cerheaddecy — 23 March 2011 @ 11:53 pm

  6. Государственнная Дума, несмотря на протесты ученых и экспертов, с помощью парламентского большинства “Единой России” ратифицировали договор о передаче Норвегии сектора Баренцева моря с богатейшими биоресурсами и полезными ископаемыми.
    Что интересно, ратификация прошла, можно сказать, “под грифом секретно”. Впервые за последние годы об этом не сообщили центральные СМИ. Спрашивается, почему?
    http://argumenti.ru/politics/2011/03/99063

    Comment by Weachinnadiek — 27 March 2011 @ 4:13 pm

  7. Медведев освободил от должности 10 генералов МВД
    Давно пора увольнять , ато зажрались там!

    Comment by vladimirgridyakin — 1 April 2011 @ 4:38 pm

  8. Привет всем форумчанам, народ как вам фильм – Запрещенный прием, стоит ли етот фильм вообще смотреть, ето круть или лажа полная ?
    Жду ваших оценок в опросе, оцениваем не стесняемся )

    Comment by mcfcoccы — 11 April 2011 @ 12:55 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Silver is the New Black Theme. Create a free website or blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: