When a file is opened, the system assigns a file descriptor to it. While the file is open, it is accessed via this FD.
When you run the sed command it truncates the file by copying it to a new file. You can see this because the inode number changes
ls -i log
131122 log
sed -i "1,200d" log
ls -i log
131090 log
What's happening is that the file is being written to, you truncate it by copying the contents to another file however the original file is held open by myApp and is still being written to by myApp, it's just marked ready for deletion when myApp finishes. You can see this with lsof.
lsof | grep myapp.log
myapp 11334 iain 1w REG 253,2 54 131122 /home/iain/myapp.log
sed -i "1,200d" myapp.log
lsof | grep myapp.log
myapp 11334 iain 1w REG 253,2 416 131122 /home/iain/myapp.log (deleted)
If you can, you should modify your app so that it will accept a signal which tells it to close and then reopen the log file, this will allow it to play nice with something like logrotate.
If you cant modify your app to handle signals then you can use a fifo. I wrote an explanation of how to do this here some time ago.