malaka,
I have been through so many iterations that its hard to say how long it took to code it up. The code is always evolving anytime I have a new feature or idea I want to add.
For just a bare bones trade execution engine you can code that up in a matter of a few weeks. Same with a bare bones backtesting engine, can code that up in a few weeks. It all depends how advanced you want to get with the system.... the part that takes the longest is developing strategies. Getting some software up and running can be quick, especially if you don't need a lot of features. Such as if you know your going to be trading 1 contract on x bars.. that is a lot quicker to get that trading/backtesting engine up and running than it is if your going to sometimes be trading on x bars, sometimse on volume bars, sometimes on range bars..... mutliple contracts at the same time.. all of those features take more time to implement.
Concerning C#.... It wont be as fast as C/C++.... but you can write a good system in C# and be just fine.