Think of C# as beeing a combination of C++ with designs taken from java.
It was orriginaly made by MS in order to compete with Java for the ease of transition across severel platforms, but as a MS thing it's still only fully supported there.. Altho Mono is picking up, alot of the system dependant calls are still missing.
I know I shouldn't diss it, but if you're planing on doing real OS independent coding, I would suggest staying with C++, I know at some points it might seem as if the only real material out there is either too easy to learn anything new from, or too hard to even get a real grasp of.
But All I can say is, work on your own projects, trying to explore your current skills and hopefuly expand them, find other opesource projects that kinda look slike what you're trying to achieve, and read the code, to try and learn from that.
All you realy need is a good refference book, which describes all the basics like the
C++ resources, and alot of new idears, then you'd rather read the description of how to use the standard function to accomodate your idears.
But remember, it isn't easy to learn everything, it takes alot of effort befor you start to considder your self among the advanced users. Just don't let the small speed bumps on the way, make you lose the sight of your vision.