读书人

请教Thread有关问题

发布时间: 2011-12-26 23:09:59 作者: rapoo

请教Thread问题
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 _1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
x();
}
int a=0;
public void B()
{
a++;
listBox1.Items.Add(a);
Thread.Sleep(1000);
}

public void x()
{
Thread t = new Thread(new ThreadStart(B));
t.IsBackground = true;
t.Start();
}
}
}

运行后
1

Thread.Sleep(1000)不应该是1秒运行一次么?为什么只显示一个1呢?

[解决办法]
加了for才能循环,你的线程就执行了一次 B()

最好建立一个委托,在委托中通过for让B()执行多次,输出多个数字
[解决办法]
public void demo()
{
MethodInvoker me = new MethodInvoker(B);
for (int i = 0; i < 20; i++)
{
this.BeginInvoke(me);
Thread.Sleep(1000);
}
}

int a=0;
public void B()
{
a++;
listBox1.Items.Add(a);
}

public void x()
{
Thread t = new Thread(new ThreadStart(demo));
t.IsBackground = true;
t.Start();
}


//改成这样子,你再试试,这个是执行20次的
//你的代码在vs05中无法通过,子线程操控了UI线程创建的控件,vs03可以通过

读书人网 >C#

热点推荐