700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C# winform 多线程中创建等待窗体

C# winform 多线程中创建等待窗体

时间:2018-09-26 21:22:28

相关推荐

C# winform 多线程中创建等待窗体

1.首先创建一个WinForm窗体,可讲窗体的FormBorderStyle属性设置为"None",将窗体的标题栏去掉。窗体中可放一个PictureBox控件和两个Label控件。其中PictureBox控件存放加载等待的图片。一个Label控件可放置Text文本。

WinForm代码如下:

using System;

using System.Collections.Generic;

using ponentModel;

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

{

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()

{

}

private Thread waitThread;

private WaitForm waitForm;

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();

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。