多线程访问winform控件示例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Thread t;
private void button1_Click(object sender, EventArgs e)
{
if (t != null)
{
t.Abort();
}
t = new Thread(Run);
t.Start();
}
private delegate void deleChange(String text);
private void ChangeLable(String text)
{
label1.Text = text;
}
private delegate void deleHide(bool isHide);
private void Hide(bool isHide)
{
label2.Visible = !isHide;
}
private void Run()
{
deleChange dcl = new deleChange(ChangeLable);
deleHide dh = new deleHide(Hide);
int count = 100;
while (count > 0)
{
if (count % 4 == 0)
{
label1.Invoke(dcl, "Start...");
}
else if (count % 4 == 1)
{
label1.Invoke(dcl, "Start..");
}
else if (count % 4 == 2)
{
label1.Invoke(dcl, "Start.");
}
else
{
label1.Invoke(dcl, "Start");
}
if (count % 2 == 0)
{
label2.Invoke(dh, true);
}
else
{
label2.Invoke(dh, false);
}
Thread.Sleep(200);
count--;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (t != null && t.IsAlive)
{
if (MessageBox.Show("yes or no?", "exit", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
t.Abort();
}
else
{
e.Cancel = true;
}
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Thread t;
private void button1_Click(object sender, EventArgs e)
{
if (t != null)
{
t.Abort();
}
t = new Thread(Run);
t.Start();
}
private delegate void deleChange(String text);
private void ChangeLable(String text)
{
label1.Text = text;
}
private delegate void deleHide(bool isHide);
private void Hide(bool isHide)
{
label2.Visible = !isHide;
}
private void Run()
{
deleChange dcl = new deleChange(ChangeLable);
deleHide dh = new deleHide(Hide);
int count = 100;
while (count > 0)
{
if (count % 4 == 0)
{
label1.Invoke(dcl, "Start...");
}
else if (count % 4 == 1)
{
label1.Invoke(dcl, "Start..");
}
else if (count % 4 == 2)
{
label1.Invoke(dcl, "Start.");
}
else
{
label1.Invoke(dcl, "Start");
}
if (count % 2 == 0)
{
label2.Invoke(dh, true);
}
else
{
label2.Invoke(dh, false);
}
Thread.Sleep(200);
count--;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (t != null && t.IsAlive)
{
if (MessageBox.Show("yes or no?", "exit", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
t.Abort();
}
else
{
e.Cancel = true;
}
}
}
}
}
作者:万猫学社
出处:http://www.cnblogs.com/heihaozi/
版权声明:本文遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。
微信扫描二维码,关注万猫学社,回复「电子书」,免费获取12本Java必读技术书籍。
出处:http://www.cnblogs.com/heihaozi/
版权声明:本文遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接和本声明。
微信扫描二维码,关注万猫学社,回复「电子书」,免费获取12本Java必读技术书籍。