Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

Possible Duplicate:
Killing a thread (C#)

I have a program that when started will spawn off a thread, the threads main process execute a few method calls that are rather meaty.

The parent class that spawned the thread needs to be able to set the thread as aborted (or stopped), and the thread needs to gracefully stop and clean up/revert changes it's made.

Is there a nice way to abort/stop a thread other than setting a volatile bool and checking if it has been set in the spawned off thread's process? The thread's process calls many methods and could take hours so checking in every single method call is a bit tedious.

I am not stuck to any particular Threading implementation so am up for suggestions

share|improve this question

marked as duplicate by 0A0D, sehe, Kristopher Johnson, Jim Mischel, Andrey Apr 20 '11 at 14:23

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1 Answer 1

If you're using the TPL in .NET 4 or a back-ported version of it for .NET 3.5 available with Rx Extensions, you can use the cooperative cancellation system, which improves on the classic boolean flag system to handle boundary cases, such as cancelling multiple parallel tasks, allowing continuation logic in the case of cancellation and, as the framework evolves, enabling forward support for new BCL functionality that natively supports the new cancellation model. It also decouples the canceller from the task being cancelled, so that you can control which code is given cancellation permissions.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com?utm_source=stackoverflow.com&amp;utm_medium=site-ui&amp;utm_campaign=footerlink\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2014 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a>                   with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2014.12.27.2141\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </no"], "copyright__copyright__copyright": ["boundary cases, such as cancelling multiple parallel tasks, allowing continuation logic in the case of cancellation and, as the framework evolves, enabling forward support for new BCL functionality that natively supports the new cancellation model. It also decouples the canceller from the task being cancelled, so that you can control which code is given cancellation permissions.\n\nshare|improve this answer\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}