想写一个抽奖软件,但到了一边刷新数据的时候没办法停下了,整个进程全部在执行数据计算,我要怎么才能调用windows的按钮终止数据计算呢?代码如下:
namespace WindowsFormsApplication1 { public partial class Form1 : Form { static int count = 1; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void InvokeControl() { if (this.InvokeRequired) this.Invoke(new DelegateChangeText(ChouJiang)); } public delegate void DelegateChangeText(); private void button1_Click(object sender, EventArgs e) { if (count % 2 == 1) { count++; Thread t1 = new Thread(new ThreadStart(this.InvokeControl)); t1.Start(); } else { } } public void ChouJiang() { int i; int j = 30; int k; int[] key = new int[j]; Random ran = new Random(); for (k = 0; k < 30; k++) { int KeyWord = ran.Next(1, 100); key[k] = KeyWord; } while (count % 2 == 0) { for (i = 0; i < 30; i++) { label1.Refresh(); label1.Text = key[i].ToString(); } } } } }
还有个问题 为什么我的vs2008 最近在修改源代码后执行的效果和没有修改的一样 就好像debug中的exe没有覆盖掉
用timer控件控制,按钮还不是可以控制停止啊!
嗯 我下了一个类似的软件,的确是用timer,什么原理呢 为什么不会干扰其他控件,windows已经自己开了多线程?
用timer控件控制时间 到时间了就停止抽奖
我要用按钮停止抽奖啊
@无边华幕: 一般的抽奖系统不都是自动停止的么 你的抽奖软件具体运行思路是怎么样的
@┢┦偉:
软件启动后,一个按钮用来开始抽奖,开始后一个label不断显示摇滚的数字,再次点击按钮后将终止数字摇滚,得出中奖号码
@无边华幕: 你的label摇滚了么
@无边华幕:
Thread t1 = null;
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text.Equals("抽奖"))
{
button1.Text = "停止";
t1 = new Thread(this.randomNum);
t1.Start();
}
else
{
button1.Text = "抽奖";
t1.Abort();
}
}
void randomNum()
{
Random rd = new Random();
for (int i = 0; i < i + 1; i++)
{
label1.Text = rd.Next(1, 100).ToString();
Thread.Sleep(300);
}
}
实现数字的变动和暂停
tl.abort();
开始后,按钮都是无响应状态 没法终止线程