最近一個同事遇到進度條加載不出來問題,即便偶爾加載出來了卻不顯示進度,程序員
看到這個問題想到的確定是把UI線程給佔住了, 因爲使用了幾個框架,簡單查看框架後,在框架中改成線程調用 問題解決了,框架
可是在思考一個問題,框架中的代碼我是可以看到也能夠修改,若是是不能更改的框架怎麼辦?spa
研究了一下,在須要用的地方調用 DispatcherHelper.UpdateUI(); 線程
PS: 在WPF中一些操做卡主UI,是WPF程序員仍是喜歡winform方式,不喜歡用綁定,形成的問題。code
public static class DispatcherHelper { [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] public static void UpdateUI() { var frame = new DispatcherFrame(); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback((agr) => { ((DispatcherFrame)agr).Continue = false; return null; }), frame); try { Dispatcher.PushFrame(frame); } catch (Exception ex) { } } }