public
partial
class
Form1 : Form
{
Thread[] workThreads =
new
Thread[10];
public
Form1()
{
InitializeComponent();
}
delegate
void
AddItemCallback(
string
text);
private
void
AddItem(
string
text)
{
if
(
this
.listBox1.InvokeRequired)
{
AddItemCallback d =
new
AddItemCallback(AddItem);
this
.Invoke(d,
new
object
[] { text });
}
else
{
this
.listBox1.Items.Add(text);
}
}
public
void
DataGet()
{
while
(
true
)
{
AddItem(
"ok"
);
Thread.Sleep(1000);
}
}
/// <summary>
/// 启动线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
button1_Click(
object
sender, EventArgs e)
{
for
(
int
i = 0; i < workThreads.Length; i++)
{
if
(workThreads[i] ==
null
)
{
workThreads[i] =
new
Thread(
new
ThreadStart(DataGet));
workThreads[i].Name = i.ToString();
workThreads[i].Start();
}
else
{
if
(workThreads[i].ThreadState == ThreadState.Aborted || workThreads[i].ThreadState == ThreadState.Stopped)
{
workThreads[i] =
new
Thread(
new
ThreadStart(DataGet));
workThreads[i].Name = i.ToString();
workThreads[i].Start();
}
else
{
workThreads[i].Start();
}
}
}
}
/// <summary>
/// 停止线程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
button2_Click(
object
sender, EventArgs e)
{
for
(
int
i = 0; i < workThreads.Length; i++)
{
if
(workThreads[i] !=
null
&& workThreads[i].ThreadState != ThreadState.Stopped && workThreads[i].ThreadState != ThreadState.Aborted)
{
workThreads[i].Abort();
}
}
}