| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:C#多线程 求助
只看楼主 加入收藏
wzboyer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-9
结帖率:0
收藏
 问题点数:0 回复次数:2 
C#多线程 求助
跪求给个实例把  最好有解释的啊   上课没懂

作业
输入整数n,要求主线程计算1到n的和,工作线程计算n的阶乘,在各自线程中输出计算结果,并在主线程中计算两者之和输出

跪求 学习资料
搜索更多相关主题的帖子: 线程 
2010-12-16 09:52
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:0 
程序代码:
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;   
        }
    }
}
2010-12-16 13:41
我是谁的小熊
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-12-16
收藏
得分:0 
额。。。不会是同班同学吧??今天老师就是叫我们做这个
2010-12-16 22:44
快速回复:C#多线程 求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016549 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved