async internal static void Generate(this IHtmlTextBlock me) { var html = me.Html; var itemsCtrl = (ItemsControl)me; if (string.IsNullOrEmpty(html)) itemsCtrl.Items.Clear(); var tb = me as HtmlTextBlock; if (tb != null) tb.UpdateHeader(); if (string.IsNullOrEmpty(html)) { if (tb != null) tb.UpdateFooter(); me.CallLoadedEvent(); return; } HtmlNode node = null; await ThreadPool.RunAsync(o => { try { var parser = new HtmlParser(); node = parser.Parse(html); } catch { } }); if (html == me.Html) { if (node != null) { try { itemsCtrl.Items.Clear(); if (tb != null) tb.UpdateHeader(); foreach (var c in node.GetControls(me)) itemsCtrl.Items.Add(c); if (tb != null) tb.UpdateFooter(); } catch { } } me.CallLoadedEvent(); } }
internal static void Generate(this IHtmlTextBlock me) { var html = me.Html; var itemsCtrl = (ItemsControl)me; if (string.IsNullOrEmpty(html)) itemsCtrl.Items.Clear(); var tb = me as HtmlTextBlock; if (tb != null) tb.UpdateHeader(); if (string.IsNullOrEmpty(html)) { if (tb != null) tb.UpdateFooter(); Deployment.Current.Dispatcher.BeginInvoke(me.CallLoadedEvent); return; } ThreadPool.QueueUserWorkItem(o => { HtmlNode node = null; try { var parser = new HtmlParser(); node = parser.Parse(html); } catch { } Deployment.Current.Dispatcher.BeginInvoke(() => { if (html == me.Html) // prevent from setting wrong control if html changed fast { if (node != null) { try { itemsCtrl.Items.Clear(); if (tb != null) tb.UpdateHeader(); foreach (var c in node.GetControls(me)) itemsCtrl.Items.Add(c); if (tb != null) tb.UpdateFooter(); } catch { } } Deployment.Current.Dispatcher.BeginInvoke(me.CallLoadedEvent); } }); }); }
async internal static void Generate(this IHtmlTextBlock me) { var html = me.Html; var itemsCtrl = (ItemsControl)me; if (string.IsNullOrEmpty(html)) itemsCtrl.Items.Clear(); var tb = me as HtmlTextBlock; if (tb != null) tb.UpdateHeader(); if (string.IsNullOrEmpty(html)) { if (tb != null) tb.UpdateFooter(); if (me is HtmlTextBlock) ((HtmlTextBlock)me).CallHtmlLoaded(); else ((FixedHtmlTextBlock)me).CallHtmlLoaded(); return; } HtmlNode node = null; #if WP7 await Task.Factory.StartNew(() => #else await Task.Run(() => #endif { try { var parser = new HtmlParser(); node = parser.Parse(html); } catch { } }); if (html == me.Html) { if (node != null) { try { itemsCtrl.Items.Clear(); if (tb != null) tb.UpdateHeader(); foreach (var c in node.GetControls(me)) itemsCtrl.Items.Add(c); if (tb != null) tb.UpdateFooter(); } catch { } } if (me is HtmlTextBlock) ((HtmlTextBlock)me).CallHtmlLoaded(); else ((FixedHtmlTextBlock)me).CallHtmlLoaded(); } }