while loop delay the serialEvent function?

No, not dead, just not called.

serialEvent should be based on interrupt,

I don't think it should; if it were people would just do daft things like call delay, or do serial I/O in it.