using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Windows; namespace Szmedi.AIScriptRunner.ProgressBarCtrl { /// /// /// public class LoadingManager { private Type m_ProgressBarViewType; private ProgressBarInfo m_ProgressBarInfo = new ProgressBarInfo(); //public static LoadingCtrl LoadingWindow { get; set; } private Window m_ProgressBarForm; public Window ProgressBarView { get { return m_ProgressBarForm; } } public ProgressBarInfo ProgressBarInfo { get { return m_ProgressBarInfo; } } public string LoadingMessage { get; set; } public LoadingManager() { } public LoadingManager(string msg) { m_ProgressBarInfo.Message = msg; m_ProgressBarInfo.TipMessage = msg+":"; } /// /// /// public void ShowProgressBar(Type progressBarViewType=null) { m_ProgressBarViewType = progressBarViewType; Thread thread = new Thread(ProgressBarStart); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } /// /// /// public void CloseProgressBar() { if (m_ProgressBarForm == null) return; m_ProgressBarForm.Dispatcher.Invoke(new Action(() => { m_ProgressBarForm.Close(); m_ProgressBarForm = null; })); } private void ProgressBarStart() { if (m_ProgressBarForm == null) { if (m_ProgressBarViewType != null) { m_ProgressBarForm = (Window)Activator.CreateInstance(m_ProgressBarViewType); } else { m_ProgressBarForm = new ProgressBarCtrl(); } m_ProgressBarForm.DataContext = m_ProgressBarInfo; } //load.Topmost = true; m_ProgressBarForm.ShowDialog(); //load.Show(); } } }