C#的多线程编程
C#的多线程编程
我有一个过程如下:
public class myClass
{
public myClass {;}
………………
………………
Private void MoveTarget()
{
for (int i=0;i<=12000000;i++)
{
//在此有复杂的操作,需交长时间
}
}
…………
}
当我在一个Form上,点击一个button调用myClass.MoveTarget()时,如果用单线程,则不能在做其他的操作了(比如关闭这个form等)
我想应该可以用多线程解决这个问题的
如:
System.Threading.Thread myThread_1;
myThread_1=new Thread((new ThreadStart(this.MoveTarget()) ));
myThread_1.Start();
但要满足我上面的需求,具体该怎么写才能让系统在执行MoveTarget时候能接受其他操作! 具体该怎么写编码
问题点数:20、回复次数:4Top
1 楼robinswan()回复于 2002-03-23 00:46:01 得分 8
问题是你的那个FORM是不是程序的主体,
如果是就相当于关闭了进程了.这个线程还能存在吗?Top
2 楼wenzm(魔术师)回复于 2002-03-23 09:45:47 得分 0
关闭form, 我只是举个例子了 ,可能是form上的其他按纽操作! 当然也包括关闭这个form的操作————如果选择了关闭此form,线程让他终止也无所谓了Top
3 楼stanley(嘉豪)回复于 2002-03-23 13:58:36 得分 0
你应该声明MoveTarget()为static,然后再用你上面的代码调用就行了!但是MoveTarget中的变量类型都必须为static才行。
一般做法是把线程体封装在一个类里面,然后再在一个static函数中实例化为一个static对象就比较方便了,不用像前一个方法中要注意很多变量的状态类型。Top
4 楼stanley(嘉豪)回复于 2002-04-25 11:04:07 得分 12
private static myClass myclass = new myClass();
Thread myThread = new Thread(new ThreadStart(myclass.MoveTarget()
);
myThread.Start();Top




