110,534
社区成员
发帖
与我相关
我的任务
分享
public void 结束button_Click(object sender, EventArgs e)
{
i = i - 1;
MainThreadList [i].flag = false;
这样的代码。
把 while(true) 改为wile(falg)
{
......
}
让过程正常结束。再说一遍,是正常结束,而不是让线程崩溃。
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
CheckForIllegalCrossThreadCalls = false;//加了这个是为了多线程可以控制UI窗体
}
//----------------------------------------------------------------全局变量声明区
Thread[] 主线程 = new Thread[7];//线程的声明
public object dclock = new object();
int i=0;
//----------------------------------------------------------------全局变量声明区
private void 开始挂机butten_Click(object sender, EventArgs e)
{
i = i + 1;
MainTherad a = new MainTherad();
主线程[i] = new Thread(a.MainThread);
主线程[i].IsBackground = true;
主线程[i].Start();//打开线程
Thread.Sleep(500);// 加个延迟.避免多窗口同步启动吧.
}
public void 结束button_Click(object sender, EventArgs e)
{
i = i - 1;
try
{
主线程[i].Abort();
主线程[i].Join();
}
catch
{}
}
public void 输出(string 输出内容)
{
lock (dclock)//枷锁下线程调用的时候不会共同使用这个然后出错
{
listBox调试滚动窗口.Items.Add(输出内容);
listBox调试滚动窗口.SetSelected(listBox调试滚动窗口.Items.Count - 1, true);
}
}
下面是MainTherad类的内容
public class MainTherad
{
//----------------------------------------------------------------全局变量声明区
public int 线程ID;
//----------------------------------------------------------------全局变量声明区
public void MainThread() //脚本主线程
{
try
{
while (true)
{
Program.MainForm.输出(" ----- ");
}
}
catch
{ }
}
}