日期:2014-05-18  浏览次数:20907 次

.NET 多线程 新线程
C# code

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ParameterizedThreadStartCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread newThread;
            ParameterizedThreadStart PTS1 = new ParameterizedThreadStart(PrintName);
            newThread = new Thread(PTS1);
            newThread.Name = "Thread 1";
            newThread.Start(10);

            ParameterizedThreadStart PTS2 = new ParameterizedThreadStart(PrintNum);
            newThread = new Thread(PTS2);
            newThread.Name = "Thread 2";
            newThread.Start(10);

            Console.ReadLine();

                
        }

        static void PrintName(object times)
        {
            for (int i = 1; i < (int)times +1; i++)
            {
                Console.WriteLine("*****我叫某某某*****\n");
                Thread.Sleep(3000);
            }

        }
        static void PrintNum(object times)
        {
            for (int i = 1; i < (int)times + 1; i++)
            {
                Console.WriteLine("*****我的学号是0001*****\n");
                Thread.Sleep(3000);
            }

        }
    }
}



C# code

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ParameterizedThreadStartCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread newThread;
            ParameterizedThreadStart PTS = new ParameterizedThreadStart(Print);
            for(int i=1;i<3;i++)
        {
        console.WriteLine("Thread "+i);
                newThread = new Thread(PTS);
        newThread.Name=i.ToString();
                newThread.Start(10);
        }

            Console.ReadLine();

                
        }

        static void Print(object times)
        {
            for (int i = 1; i < (int)times +1; i++)
            {
                Console.WriteLine("*****我叫某某某,我的学号是0001*****\n");
                Thread.Sleep(1);
            }

        }
    }
}




请问大家,这两段代码区别在哪?

都是多线程吗?

什么是新线程?上面的代码中有体现吗?

谢谢!


------解决方案--------------------
都是多线程
各自启动了两个新线程
newThread = new Thread(PTS1); 创建线程
newThread.Start(10);启动线程

本质上两个程序一样。
如果说有区别的话,
第一个程序的两个线程各自委托执行了一个方法。
第二个程序的两个线程委托执行同一个方法。
------解决方案--------------------
默认就是单线程,即UI的线程上。所以如果你下载文件,或处理大数据时,UI线程会被阻塞,界面会无法响应。
如果new了一个Thread,让这个Thread去下载文件,UI线程就不会阻塞,能控制进度条了。
------解决方案--------------------
我叫某某某,我的学号是0001
分别在两个线程中输出 与 在两个线程中一起输出 的差别