写了个程序 里面调用了几个线程
线程执行方法,方法里面重置线程,但是随着程序运行时间内存占用越来越大
代码大概逻辑如下
//线程的参数类
public class ThreadPara{
publict int id{get;set;}
publict string name{get;set;}
//...
}
public partial class From1Main : Form{
ThreadPara para = new ThreadPara();
ThreadPara para2 = new ThreadPara();
private Thread t1 = null;
private Thread t2 = null; private void From1Main_Load(sender ,e){
para.id=1;//对para赋值...
para2.id=1;//对para2赋值...
t1 = new Thread(new ParameterizedThreadStart(fun1));
t1.Start(para);
t2= new Thread(new ParameterizedThreadStart(fun2));
t2.Start(para2);
} private void fun1(object para){
ThreadPara paraArray = para as ThreadPara;
//dosomething here
//...................
//
Thread.Sleep(100000);
t1 = new Thread(new ParameterizedThreadStart(fun1));
t1.Start(paraArray);
} private void fun2(object para){
ThreadPara paraArray = para as ThreadPara;
//dosomething here
//...................
//
Thread.Sleep(100000);
t2 = new Thread(new ParameterizedThreadStart(fun2));
t2.Start(paraArray);
}
}
线程执行方法,方法里面重置线程,但是随着程序运行时间内存占用越来越大
代码大概逻辑如下
//线程的参数类
public class ThreadPara{
publict int id{get;set;}
publict string name{get;set;}
//...
}
public partial class From1Main : Form{
ThreadPara para = new ThreadPara();
ThreadPara para2 = new ThreadPara();
private Thread t1 = null;
private Thread t2 = null; private void From1Main_Load(sender ,e){
para.id=1;//对para赋值...
para2.id=1;//对para2赋值...
t1 = new Thread(new ParameterizedThreadStart(fun1));
t1.Start(para);
t2= new Thread(new ParameterizedThreadStart(fun2));
t2.Start(para2);
} private void fun1(object para){
ThreadPara paraArray = para as ThreadPara;
//dosomething here
//...................
//
Thread.Sleep(100000);
t1 = new Thread(new ParameterizedThreadStart(fun1));
t1.Start(paraArray);
} private void fun2(object para){
ThreadPara paraArray = para as ThreadPara;
//dosomething here
//...................
//
Thread.Sleep(100000);
t2 = new Thread(new ParameterizedThreadStart(fun2));
t2.Start(paraArray);
}
}
你应该只开一个线程然后 while(true)循环做你的事情
//线程的参数类
public class ThreadPara{
publict int id{get;set;}
publict string name{get;set;}
//...
}
public partial class From1Main : Form{
ThreadPara para = new ThreadPara();
ThreadPara para2 = new ThreadPara();
private Thread t1 = null;
private Thread t2 = null; private void From1Main_Load(sender ,e){
para.id=1;//对para赋值...
para2.id=1;//对para2赋值...
whiel(true){
if(t1==null){
t1 = new Thread(new ParameterizedThreadStart(fun1));
t1.Start(para);
}
if(t2==null){
t2= new Thread(new ParameterizedThreadStart(fun2));
t2.Start(para2);
}
}
} private void fun1(object para){
ThreadPara paraArray = para as ThreadPara;
//dosomething here
//...................
//
Thread.Sleep(100000);
t1.Abort();
t1 =null;
} private void fun2(object para){
ThreadPara paraArray = para as ThreadPara;
//dosomething here
//...................
//
Thread.Sleep(100000);
t2.Abort();
t2 =null;
}
}那如果改写成这样是不是合理的?
{
var a =1;
var b = 1;
var c = plus(a,b);
Debug.Assert(c == 2, "1+1结果应该等于2");
}先不管什么理论,先学着写一个测试,证明你有能力把 Bug 抛出来。一个真正会编程的人,绝不是只会写 plus 方法的人,而是一个会写出后边那条 Debug.Assert 代码的人。