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;
}
}
}