1.首先创建一个WinForm窗体;可讲窗体的FormBorderStyle属性设置为;None;;将窗体的标题栏去掉。窗体中可放一个PictureBox控件和两个Label控件。其中PictureBox控件存放加载等待的图片。一个Label控件可放置Text文本。
WinForm代码如下;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Test
{
public partial class WaitForm : Form
{
public WaitForm()
{
InitializeComponent();
SetText(;;);
}
private delegate void SetTextHandler(string text);
public void SetText(string text)
{
if (this.label2.InvokeRequired)
{
this.Invoke(new SetTextHandler(SetText), text);
}
else
{
this.label2.Text = text;
}
}
}
}
2.新建一个类WaitFormService;代码如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace Test
{
public class WaitFormService
{
private Thread waitThread;
private WaitForm waitForm;
public static void CreateWaitForm()
{
WaitFormService.Instance.CreateForm();
}
public static void CloseWaitForm()
{
WaitFormService.Instance.CloseForm();
}
public static void SetWaitFormCaption(string text)
{
WaitFormService.Instance.SetFormCaption(text);
}
private static WaitFormService _instance;
private static readonly Object syncLock = new Object();
public static WaitFormService Instance
{
get
{
if (WaitFormService._instance == null)
{
lock (syncLock)
{
if (WaitFormService._instance == null)
{
WaitFormService._instance = new WaitFormService();
}
}
}
return WaitFormService._instance;
}
}
private WaitFormService()
{
}
public void CreateForm()
{
if (waitThread != null)
{
try
{
waitThread.Abort();
}
catch (Exception)
{
}
}
waitThread = new Thread(new ThreadStart(delegate()
{
waitForm = new WaitForm();
Application.Run(waitForm);
}));
waitThread.Start();
}
public void CloseForm()
{
if (waitThread != null)
{
try
{
waitThread.Abort();
}
catch (Exception)
{
}
}
}
public void SetFormCaption(string text)
{
if (waitForm != null)
{
try
{
waitForm.SetText(text);
}
catch (Exception)
{
}
}
}
}
}
3.调用如下;
try
{
WaitFormService.CreateWaitForm();
Assembly asmb = Assembly.GetExecutingAssembly();
WaitFormService.CloseWaitForm();
}
catch (Exception ex)
{
WaitFormService.CloseWaitForm();
}