To me, there are a couple of rules when you should think about parallelizing your code (and even then, you should still test to see if it is faster):
- The code you want to parallelize is computationally intensive. Just waiting for IO typically wont net you much benefit. It has to be something where you would definitely make use of a bunch of CPU time (like rendering an image).
- The code you want to parallelize is complex enough that the overhead of making the parallelization is less than the savings you get from distributing the code (ie, setting a string to string.Empty is incredibly simple and fast; you would need something much more complex per item to make it worth it)
- The code you want to parallelize is independent and has no dependencies on other items.