我程序中的多线程部分是这样的
首先,程序启动一个线程池,来存放主要代码:如下:ThreadPool.QueueUserWorkItem(new WaitCallback(AnalysisCode), anaPara);其中,AnalysisCode 就是主要运行主要功能的那个程序,anaPara是需要的参数然后在AnalysisCode这个函数体内使用了......
......
while(...)
{
  ......
  CThreadOpera opera = new CThreadOpera(para1,para2.......paraN);
  ThreadStart ts = new ThreadStart(opera.Analysis);
  Thread t = new Thread(ts);
  t.Start();
  ......
}代码很多,没法全部贴上,但大体结构是这样的,但要命的问题来了,这个程序还是1.1的时候(vs2003开发)正常运行的,cpu占用的也不高但今天我用vs2005将其转化成了2.0下运行的程序,期间没有什么错误,里边也没有过期代码的提示,但运行后虽然没有错误,但cpu占用确一直在90-100%之间,请问各位大侠,1.1下的多线程转换到2.0下需要注意什么?到底是怎么回事呢?

解决方案 »

  1.   

    线程数量是不定的,ThreadPool.QueueUserWorkItem这个大约在2-3个
    每个AnalysisCode函数里的thread就不定了,根据参数设置,一般也在5-10个之间
    循环体内是有Thread.Sleep(100)的
      

  2.   

    每次while的循环次数比较多,成千上万次吧
      

  3.   

    可以用vs的性能分析浏览器来分析一下都是哪里占用了cpu
      

  4.   

    非常感谢,我已经看了,确实有一个函数占用较多的资源
    不过我很纳闷,在vs2003就是.net1.1下的时候占用资源非常少,运行也很稳定,怎么一转换成2.0下后就这样了呢?我查看了下,代码没有什么地方不符合2.0的多线程编码规律啊,我编写的几个图像处理软件处理图像时(比如曲线功能),都是采用差不多的方法,但运行的都比较不错,怎么这个程序会这样呢纳闷的不得了