Unfortunately, that makes your project like the Titanic.
I don’t mean that it’s largest and most luxurious application every written, but rather that you may be cruising headlong into a nasty rendezvous with an iceberg that could deal a severe blow to your project.
To work around this issue, I implemented the following code: The code looks for the key (the Doc ID) in the property bag and if it is present, skip the creation of the task and remove the property from the bag.
On one list I have a workflow, which is changing columns in that list.
BTW : This Code isn't written in the itemadded method nor in the itemupdated method, actually it's the code in a user control for a webpart development.