private void BtnStart_Click(object sender, EventArgs e)
{
//锁定区域同时进行数据处理
Monitor.Enter(threadlock);
try
{
//启动线程
ThreadStart thsrt = new ThreadStart(Listen);
//10个线程全部执行统一的方法
Thread[] threads = new Thread[10]; //mythread = new Thread(thsrt);
if (State) //如果状态是true,表示可以开启
{
//循环10个线程
for (int i = 0; i < 10; i++)
{
threads[i] = new Thread(thsrt);
//设置线程为后台后台线程 ,也叫守护线程
threads[i].IsBackground = true;
}
//循环遍历所有的10个线程
foreach (Thread th in threads)
{
//开启线程
th.Start();
}
//mythread.Start();
//线程睡眠1000毫秒
Thread.Sleep(1000);
//将状态改为false
State = false;
this.BtnStart.Text = "停止监听";
this.Messagetxt.Text = "服务已启动,正在侦听...";
}
else
{
//中断线程
mythread.Interrupt();
//终止线程
mythread.Abort();
State = true;
this.BtnStart.Text = "启动监听";
this.Messagetxt.Text = "服务已关闭,等待开启...";
}
}
catch (Exception ex)
{
DAL.Log.Write(DateTime.Now + ex.ToString() + "\r\n\r\n");
}
finally
{
//退出对于线程的锁定
Monitor.Exit(threadlock);
}
}
{
//锁定区域同时进行数据处理
Monitor.Enter(threadlock);
try
{
//启动线程
ThreadStart thsrt = new ThreadStart(Listen);
//10个线程全部执行统一的方法
Thread[] threads = new Thread[10]; //mythread = new Thread(thsrt);
if (State) //如果状态是true,表示可以开启
{
//循环10个线程
for (int i = 0; i < 10; i++)
{
threads[i] = new Thread(thsrt);
//设置线程为后台后台线程 ,也叫守护线程
threads[i].IsBackground = true;
}
//循环遍历所有的10个线程
foreach (Thread th in threads)
{
//开启线程
th.Start();
}
//mythread.Start();
//线程睡眠1000毫秒
Thread.Sleep(1000);
//将状态改为false
State = false;
this.BtnStart.Text = "停止监听";
this.Messagetxt.Text = "服务已启动,正在侦听...";
}
else
{
//中断线程
mythread.Interrupt();
//终止线程
mythread.Abort();
State = true;
this.BtnStart.Text = "启动监听";
this.Messagetxt.Text = "服务已关闭,等待开启...";
}
}
catch (Exception ex)
{
DAL.Log.Write(DateTime.Now + ex.ToString() + "\r\n\r\n");
}
finally
{
//退出对于线程的锁定
Monitor.Exit(threadlock);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货