I have manually stopped app pool and started it by C# code. Then I did IISRESET by C# code only, its stopping again my application pool.
That's what IISReset does: it restarts the entire web server. In other words, when you do an IISReset, you're stopping all services, including all app pools, then bringing them back up again.
It sounds as if you were expecting a finer grain operation to happen during an IISReset; it is the "axe" approach, not the "scalpel".