if it's not obvious, one sync's on the current object in a code block and the other sync's on the current object during the entire execution of the method. The first is a more fine-grain way to perform sync's on shared resources.
<a href="http://www.rajindery.com" target="_blank" rel="nofollow">Rajinder Yadav</a><p>Each problem that I solved became a rule which served afterwards to solve other problems. --Rene Descartes
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com