There is an overload of the StartNew() method that accepts a CancellationToken. Here's an example: http://msdn.microsoft.com/en-us/library/dd997396.aspx. The basics are that you create and then pass in this token to your method (or refer to it from the parent thread; it's thread-safe). Your parallel method then must, at convenient times (like within a loop), check to see if the token indicates the task has been cancelled. If so, it gracefully exits.