Windows Metro loading data asynchronously
===

I have created a Windows 8 Metro App based on the Split Page sample app.  However, in the sample app the data is loaded synchronously in the constructor.  I'm accessing a text file and therefore need to load the data asynchronously.  The constructor looks like this:

        public MyDataSource()
        {
            DataLoaded = false;

            LoadData();
        }

`LoadData()` is an asynchronous method that populates the data model.  This works fine, and displays the data as is loads it (which is the behavior that I want).  The problem occurs when I try testing the suspend and terminate.  The problem being that the recovery has the potential to attempt to access the data model before it is populated:

        public static MyDataGroup GetGroup(string uniqueId)
        {
            // If the data hasn't been loaded yet then what?
            if (_myDataSource == null)
            {
         	// Where app has been suspended and terminated there is no data available yet
            }

            // Simple linear search is acceptable for small data sets
            var matches = _myDataSource.AllGroups.Where((group) => group.UniqueId.Equals(uniqueId));
            if (matches.Count() == 1) return matches.First();
            return null;
        }

I can fix this by changing the constructor to call `LoadData().Wait`, but this means that the app locks the UI thread.  What I believe I need is a method of getting the recovery code in `GetGroup` to wait until the data has loaded without locking the UI thread.  Is this possible or advisable, and if so, how?

