Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>@Stef7 &amp; @Panagiotis - You guys are right that the UI thread was blocked. I'm not sure I understand why an async call blocks the UI thread though; I'll have to do more research.</p> <p>I had already tried a Background thread but that didn't resolve my issue until I implemented ContinueWith on the Task. </p> <p>Thank you for your help.</p> <p>Here is the final code.</p> <pre><code>public partial class Splash : Window { private TypeBO boType = new TypeBO(); private Stopwatch swTotal = new Stopwatch(); private Stopwatch swData= new Stopwatch(); public Splash() { InitializeComponent(); swTotal.Start(); } private void GetData() { Assembly assembly = Assembly.GetExecutingAssembly(); lblMessage.Content = "Please Wait..."; lblVersion.Content = "Version: " + assembly.GetName().Version.Major + "." + assembly.GetName().Version.Minor + "." + assembly.GetName().Version.Revision; swData.Start(); var backgroundWorker = new BackgroundWorker(); backgroundWorker.DoWork += this.OnBackgroundWorkerDoWork; backgroundWorker.RunWorkerCompleted += OnBackgroundWorkerRunWorkerCompleted; backgroundWorker.RunWorkerAsync(); } private void OnBackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { WEBAPI.GetHttpClient().GetAsync("api/COStateType/GetStateTypesByCountryID/" + Constants.COUNTRY_ID_USA).ContinueWith(r =&gt; { r.Result.EnsureSuccessStatusCode(); e.Result = r.Result.Content.ReadAsAsync&lt;List&lt;coStateType&gt;&gt;().Result; }).Wait(); swData.Stop(); System.Diagnostics.Debug.Write("Splash - DATA - Total Elapsed Time - " + swData.Elapsed + Environment.NewLine); } private void OnBackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { var backgroundWorker = sender as BackgroundWorker; backgroundWorker.DoWork -= this.OnBackgroundWorkerDoWork; backgroundWorker.RunWorkerCompleted -= OnBackgroundWorkerRunWorkerCompleted; App.stateTypes = e.Result as List&lt;coStateType&gt;; coStateType pleaseSelectStateType = new coStateType() { State_ID = 0, State_Nm = "Select One", Country_ID = 1 }; App.stateTypes.Insert(0, pleaseSelectStateType); sbHideState.Completed += (snd, eva) =&gt; { //Pre-Load User Controls Assembly assembly = this.GetType().Assembly; UserControl ucBHSearch = (UserControl)assembly.CreateInstance(string.Format("{0}.BHSearch", "ABS2.WPF.ADMIN.UserControls.BusinessHierarchy")); UserControl ucBHDetails = (UserControl)assembly.CreateInstance(string.Format("{0}.BHDetails", "ABS2.WPF.ADMIN.UserControls.BusinessHierarchy")); App.userControls.Add("BHD", ucBHDetails); App.userControls.Add("BHS", ucBHSearch); Login winLogin = new Login(); winLogin.Show(); swTotal.Stop(); System.Diagnostics.Debug.Write("Splash - UI - Total Elapsed Time - " + swTotal.Elapsed + Environment.NewLine + Environment.NewLine); swTotal.Reset(); this.Close(); }; sbHideState.Begin(gridSplash); } private void Window_Loaded_1(object sender, RoutedEventArgs e) { lblMessage.Content = ""; lblVersion.Content = ""; sbDefaultState.Begin(gridSplash); sbRotateState.Begin(gridSplash); } private void window_ContentRendered(object sender, EventArgs e) { sbShowState.Completed += (snd, eva) =&gt; { GetData(); }; sbShowState.Begin(gridSplash); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload