i ping 50 IP地址,但是当我单击"启动"时,程序会冻结。
我该怎么做而不冻结。
private void button1_Click(object sender, EventArgs e)
{
string IP = textBox1.Text;
string[] IPBlocks = IP.Split('.');
for (int x = 0; x < 50; x++)
{
System.Threading.Thread.Sleep(50);
int IPLastBlock = Int32.Parse(IPBlocks[3]) + (x+1);
IP = IPBlocks[0]+"."+ IPBlocks[1]+"."+ IPBlocks[2]+"."+ IPLastBlock;
bool pingStatus = PingHost(IP);
textBox2.Text += String.Format("{0} => {1} rn", IP, pingStatus);
}
}
on按钮单击启动separte线程,这不会悬挂您的屏幕
private void button1_Click(object sender, EventArgs e)
{
Thread newThread= new Thread(PingIP);
newThread.Start();
}
private void PingIP()
{
string IP = textBox1.Text;
string[] IPBlocks = IP.Split('.');
for (int x = 0; x < 50; x++)
{
System.Threading.Thread.Sleep(50);
int IPLastBlock = Int32.Parse(IPBlocks[3]) + (x+1);
IP = IPBlocks[0]+"."+ IPBlocks[1]+"."+ IPBlocks[2]+"."+ IPLastBlock;
bool pingStatus = PingHost(IP);
textBox2.Text += String.Format("{0} => {1} rn", IP, pingStatus);
}
}
使用threadpool.queueuserworkitem
ThreadPool.QueueUserWorkItem(delegate {
bool pingStatus = PingHost(IP);
textBox2.Text += String.Format("{0} => {1} rn", IP, pingStatus);
});