On a first glance, I would recomend not trying to validate every time the text is changed. That can, and does, get a bit overwhelming. I fear that is what is going on here. Good job on making it Async as that will keep it from blocking but I also suspect it is hiding your issue.
Try having the TextChanged event set a flag to execute the validator and then just have the DoWork method run in a tight(ish) loop checking that flag. That will allow it time to complete and not get confused. It might take a second or two to get the correct data but shouldn't lock up.
Good luck.
Craig
2009-03-20 23:15:20