111,092
社区成员




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 ThreadTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1);
ThreadPool.QueueUserWorkItem(DoWork, i);
}
}
private void DoWork(object o)
{
Thread.Sleep(1000);
int id=Thread.CurrentThread.ManagedThreadId;
int userThread, ioThread;
ThreadPool.GetAvailableThreads(out userThread,out ioThread);
int userMaxThread, ioMaxThread;
ThreadPool.GetMaxThreads(out userMaxThread, out ioMaxThread);
this.Invoke(new Action(() => {
textBox1.Text = string.Format("{0}111i:{1} ID:{2} HashCode:{3} Aviad:{4} IO:{5}\r\n", textBox1.Text,
o.ToString(), id,
Thread.CurrentThread.GetHashCode(), userThread, userMaxThread);
textBox1.SelectionStart = textBox1.TextLength;
textBox1.ScrollToCaret();
}));
for (int k = 0; k < 10; k++)
{
ThreadPool.SetMaxThreads(10, 1);
ThreadPool.QueueUserWorkItem(DoWork2, k);
}
}
private void DoWork2(object o)
{
Thread.Sleep(100);
int id = Thread.CurrentThread.ManagedThreadId;
int userThread, ioThread;
ThreadPool.GetAvailableThreads(out userThread, out ioThread);
int userMaxThread, ioMaxThread;
ThreadPool.GetMaxThreads(out userMaxThread, out ioMaxThread);
this.Invoke(new Action(() =>
{
textBox1.Text = string.Format("{0}222i:{1} ID:{2} HashCode:{3} Aviad:{4} IO:{5}\r\n", textBox1.Text,
o.ToString(), id,
Thread.CurrentThread.GetHashCode(), userThread, userMaxThread);
textBox1.SelectionStart = textBox1.TextLength;
textBox1.ScrollToCaret();
}));
}
private void Form1_Load(object sender, EventArgs e)
{
ThreadPool.SetMaxThreads(10, 1);
}
}
}