The thing is that I don't know if changing the view is the best way of doing this
Yes, and it's the simplest way. You store a global coordinate of your player, and depending on that you know which part of the map to display.
For example (analogue for Y coordinate):
screen/map part width: w = 800
player X coordinate: x = 1700
left border: l = x - w/2 = 1300
right border: r = x + w/2 = 2100
left part: floor(l / w) = 1 -> second part
right part: floor(r / w) = 2 -> third part
0 800 1600 2400
+----0----+----1----+----2----+
l----x----r
No, don't get into threads. That's why he wrote you should pre-load the map, which can be done without threads.
By the way, if you're new to C++, I recommend reading a good book such as C++ Primer. Even if C# looks like a similar language, it totally isn't. You have to re-learn a lot of things.