>>>public App() >>>{ >>> fSplashScreen = new SplashScreen("/Resources/Splash.png"); >>> fSplashScreen.Show(false); >>> GISGlobals.GISCommunicator = GISCommunicator.Current; >>> >>> // Why might this be done this way. >>> InitStartUpXmlSerializiersExecute lInitSerializers = new InitStartUpXmlSerializiersExecute(InitStartUpXmlSerializiers); >>> lInitSerializers.Invoke(); >>>} >>> >>>protected void InitStartUpXmlSerializiers() >>>{ >>> Communicator.GetXmlSerializer(typeof(DBSearchResultList)); >>> Communicator.GetXmlSerializer(typeof(DBSiteList)); >>> Communicator.GetXmlSerializer(typeof(DBRanges)); >>> // Times 17 of these Serializers >>>} >>>>>>
>'protected delegate void InitStartUpXmlSerializiersExecute();
>
I can see no point in the construct. Don't think Dispatcher.BeginInvoke would be of great benefit either since it will still tie up the UI thread. Why not just use a BackgroundWorker:private BackgroundWorker bw; public App() { bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); bw.RunWorkerAsync(); fSplashScreen = new SplashScreen("/Resources/Splash.png"); fSplashScreen.Show(false); } void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { Communicator.GetXmlSerializer(typeof(DBSearchResultList)); Communicator.GetXmlSerializer(typeof(DBSiteList)); Communicator.GetXmlSerializer(typeof(DBRanges)); }You'd probably want to provide some indication of when all of the GetXmlSerializer() methods have completed ?