读书人

.NET 多线程 新线程,该如何处理

发布时间: 2012-05-30 20:20:04 作者: rapoo

.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
分别在两个线程中输出 与 在两个线程中一起输出 的差别

读书人网 >C#

热点推荐