I want to stop the workflow which in progress or pause and restart the workflow when item is edited. lets say i have created one item, workflow starts in progress. Now i want to edit the list item. i do it but my workflow is still running on old items not on updated or edited items. please guide me. how can i achieve this.
As my Knowledge you can create Two workflows on same list one is Start when "start when an item is Created" and second workflow is When "start when an item is changed" by SharePoint Out Of Box.
Don't know if I got your question. First, you should create a second workflow, set it to "start when an item is changed". Within this workflow you can access your up to date data from within the item every time it is changed. However you cannot stop the workflow started by "item creation workflow" from within the "item changed workflow", at least not with SharePoint Designer.
I think you can use event handler associated with item for item changed. Every time an item has been edited, check whether a workflow instance is still running. If so, cancel the running workflow. This link would help you. http://chrissyblanco.blogspot.com/2007/08/cancelling-running-workflow.html
If you don't want to go for coding, you can try below approach, SP designer workflows have this behavior that they do not stop when the item is updated.
Create 2 lists (parent and child) and a workflow on each (wf1 and wf2) respectively. When your condition meets in the workflow(wf1) of parent list, create an item in child list on which the wf2 workflow starts and pauses till the specified date. Once the pause is completed, you can send the mail from workflow 1 or 2 and then delete the item in child list.
Modify your Parent list workflow to handle the below scenario. If you ever update the item in parent list, delete the corresponding item in child list that was paused/waiting and create a fresh one.
You need to store the fields Parent list Item ID, version(optional).
Parent list is your actual list. Child list is a staging one which you never expose to anyone.