I'm making a 2D XNA game. I'd like to implement loading screens when stuff has to load for a while. Like when I login to an account, connect to the server, and generate worlds. I'm pretty sure it needs to be multithreaded, because I want to be able to do something like "Generating World 10%...11%...".

      GenerateWorld()
      {
           //Call StartLoading("Generating World"); or something
           //Starter generating, Updating progress...
           //End loading screen and fade into world
      }

Help appreciated, I'm new.