C#多线程 求助
跪求给个实例把 最好有解释的啊 上课没懂作业
输入整数n,要求主线程计算1到n的和,工作线程计算n的阶乘,在各自线程中输出计算结果,并在主线程中计算两者之和输出
跪求 学习资料
using System; using System.Threading; namespace BBCN.CSharp.ZhouFeng { //////////////////////////////////////////////////////////// // Class: Program // 入口 public class Program { private static int number = 0; public static void Main() { Console.WriteLine("请输入一个数:"); // 读入number变量 while( true) { string numStr = Console.ReadLine(); bool parsed = int.TryParse( numStr, out number); // 验证用户是否输入正确 if ( parsed) { break; } else { Console.WriteLine("您的输入有误"); continue; } } // 主线程使用number副本 double copyNumber = number; // 创建工作线程 Thread workThread = new Thread( new ThreadStart( WorkThreadEntry)); workThread.Name = "WorkThread"; workThread.Start(); try { Console.WriteLine( "{0}的和是:{1}.", copyNumber, Sum( copyNumber)); } catch( NotPositiveNumberException<double> ex) { Console.WriteLine("{0}不是一个有效的数值!", ex.Number); Thread.CurrentThread.Join(); } Console.ReadKey(); } // 工作线程入口 public static void WorkThreadEntry() { // 计算10的阶乘 Factorial( number); Console.WriteLine("{0}的阶乘是:{1}", number, Factorial( number)); Thread.Sleep(100); } // 计算阶乘递归函数 public static double Factorial( double number) { if ( number == 1) { return 1; } else { return number * Factorial( number - 1); } } // 求和 public static double Sum( double number) { if ( number < 0) { throw new NotPositiveNumberException<double>( number); } else { double sum = 0; for( int num = 1; num <= number; num++) { sum += num; } return sum; } } } //////////////////////////////////////////////////////////// // Class: NotPositiveNumberException泛型类 public class NotPositiveNumberException<T> : Exception { public readonly T Number; public NotPositiveNumberException( T num) { Number = num; } } }