110,561
社区成员
发帖
与我相关
我的任务
分享
public Form1()
{
InitializeComponent();
threadOne = new Thread(new ThreadStart(Run));
threadTwo = new Thread(new ThreadStart(Run));
threadThree = new Thread(new ThreadStart(Run));
dele_display = new displayOnlineComputer(displayComputerStatus);
}
private List<string> ticketList;
private object objLock = new object();
private delegate void ListBoxCallBack();
private delegate void LableCallBack();
private void button1_Click(object sender, EventArgs e)
{
Start();
}
public void Start()
{
ticketList = new List<string>(10);
for (int i = 1; i <= 10; i++)
{
ticketList.Add(i.ToString());
}
threadOne.Start();
threadTwo.Start();
threadThree.Start();
}
private void displayComputerStatus(int on,int off)
{
label1.Text = on.ToString();
label2.Text = off.ToString();
}
private void Run()
{
int num=0;
while (ticketList.Count > 0)
{
Monitor.Enter(objLock);
if (ticketList.Count > 0)
{
string ticketNo = IcmpPacket.PingHost("192.168.0.9",64);
if(ticketNo.Contains("192.168.0.9"))
{
num++;
LableCallBack lblCallBack = delegate()
{
label1.Text = num.ToString();
};
label1.Invoke(lblCallBack);
}
ListBoxCallBack callBack = delegate()
{
richTextBox1.Text += ticketNo + "\n";
};
richTextBox1.Invoke(callBack);
ticketList.RemoveAt(0);
Thread.Sleep(1000);
}
Monitor.Exit(objLock);
}
}