Files

84 lines
2.2 KiB
C#
Raw Permalink Normal View History

2025-09-16 16:06:41 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows;
namespace Szmedi.AIScriptRunner.ProgressBarCtrl
{
/// <summary>
///
/// </summary>
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+":";
}
/// <summary>
///
/// </summary>
public void ShowProgressBar(Type progressBarViewType=null)
{
m_ProgressBarViewType = progressBarViewType;
Thread thread = new Thread(ProgressBarStart);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
/// <summary>
///
/// </summary>
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();
}
}
}