首页 新闻 会员 周边

一个抽奖软件的问题,似乎关于多线程

0
悬赏园豆:20 [已解决问题] 解决于 2012-05-30 21:55

想写一个抽奖软件,但到了一边刷新数据的时候没办法停下了,整个进程全部在执行数据计算,我要怎么才能调用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没有覆盖掉

无边华幕的主页 无边华幕 | 初学一级 | 园豆:63
提问于:2012-05-29 08:53
< >
分享
最佳答案
0

用timer控件控制,按钮还不是可以控制停止啊!

收获园豆:10
xu_happy_you | 菜鸟二级 |园豆:222 | 2012-05-29 09:10

嗯 我下了一个类似的软件,的确是用timer,什么原理呢  为什么不会干扰其他控件,windows已经自己开了多线程?

无边华幕 | 园豆:63 (初学一级) | 2012-05-29 09:14
其他回答(2)
0

用timer控件控制时间     到时间了就停止抽奖

收获园豆:10
┢┦偉 | 园豆:1240 (小虾三级) | 2012-05-29 09:03

我要用按钮停止抽奖啊

支持(0) 反对(0) 无边华幕 | 园豆:63 (初学一级) | 2012-05-29 09:04

@无边华幕: 一般的抽奖系统不都是自动停止的么      你的抽奖软件具体运行思路是怎么样的

支持(0) 反对(0) ┢┦偉 | 园豆:1240 (小虾三级) | 2012-05-29 09:07

@┢┦偉: 

软件启动后,一个按钮用来开始抽奖,开始后一个label不断显示摇滚的数字,再次点击按钮后将终止数字摇滚,得出中奖号码

支持(0) 反对(0) 无边华幕 | 园豆:63 (初学一级) | 2012-05-29 09:12

@无边华幕: 你的label摇滚了么

支持(0) 反对(0) ┢┦偉 | 园豆:1240 (小虾三级) | 2012-05-29 09:17

@无边华幕: 

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

 

 

实现数字的变动和暂停

支持(0) 反对(0) ┢┦偉 | 园豆:1240 (小虾三级) | 2012-05-29 17:39
0

tl.abort();

sinhbv | 园豆:2579 (老鸟四级) | 2012-05-29 09:13

开始后,按钮都是无响应状态  没法终止线程

支持(0) 反对(0) 无边华幕 | 园豆:63 (初学一级) | 2012-05-29 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册