Because you overwrite your previous saved file. Include milliseconds in file name and be happy.
bm.Save(DateTime.Now.ToString("yyMMddHHmmssfff") + ".png", ImageFormat.Png);
I think it is not good idea to sleep thread.
To be more accurate, you must use guaranteed changeable factor in your generated name, because DateTame
hasn't enough accuracy. Something like this:
bm.Save(DateTime.Now.ToString("yyMMddHHmmss") + "_" + count++ + ".png", ImageFormat.Png);
Then