.NET 多线程执行函数

/*
 *
 * 用户: Changweihua
 * 日期: 2012/11/13
 * 时间:  15:51
 * 邮箱: changweihua@outlook.com
 * 博客: http://www.cmono.net
 *  
 * 描述:
 *
 *
 * 修改:
 *      .NET 多线程执行函数
 *
 *
 * 不足:
 * 
 *
 *
 *
 *
 * 不足:
 *
 */
using System;
using System.Threading;

namespace Console6
{
    class Program
    {
        //同步变量
        static object obj = new object();
        static int balance = 500;
        
        public static void Main(string[] args)
        {
            #region 多线程调用无参函数
            
//            Console.WriteLine("主线程开始");
//            
//            //注意ThreadStart委托的定义形式
//            Thread t = new Thread(new ThreadStart(ShowTime));
//            t.Start();
//            
//            //线程开始,控制返回Main
//            Console.WriteLine("主线程继续执行");
//            
//            Thread.Sleep(1000);
//            
//            t.Abort();
//            
//            //阻塞Main线程,直到t终止
//            t.Join();
//            
//            Console.WriteLine("-------------------------------------");
//            
            
             #endregion
            
            #region 多线程调用有参函数1
            
//            Console.WriteLine("Main线程开始");
//            
//            Thread t = new Thread(new ParameterizedThreadStart(DoSomething));
//            
//            t.Start(new string[]{"Hello", "World"});
//            
//            Console.WriteLine("Main线程继续执行");
//            
//            Thread.Sleep(1000);
//            
//            t.Abort();
//            t.Join();
            
            
            
            #endregion
            
            #region 多线程调用有参函数2
            
//            Guest guest = new Guest { Name = "Hello", Age = 99 };
//            
//            Thread t = new Thread(new ThreadStart(guest.DoSomething));
//            
//            t.Start();
//            
//            Thread.Sleep(1000);
//            
//            t.Abort();
//            t.Join();
            
            #endregion
            
            #region 多线程调用有参函数3
//            
//            Thread t = new Thread(new ThreadStart(delegate(){ DoSomething(new string[]{ "世界", "你好" }); }));
//            
//            t.Start();
//            
//            Thread.Sleep(1000);
//            
//            t.Abort();
//            t.Join();
            
            #endregion
            
            #region 多线程调用有参函数4
          
//            Thread t = new Thread(new ThreadStart(() => { DoSomething(new string[]{ "世界", "你好" }); }));
//            
//            t.Start();
//            
//            Thread.Sleep(1000);
//            
//            t.Abort();
//            t.Join();
            
            #endregion
            
            #region 多线程同步
            
//            Thread t1 = new Thread(new ThreadStart(Credit));
//            t1.Start();
//            
//            Thread t2 = new Thread(new ThreadStart(Debit));
//            t2.Start();
            
            #endregion
            
            Console.ReadKey(true);
        }
        
        static void Credit()
        {
            for (int i = 0; i < 15; i++) 
            {
                lock(obj)
                {
                    balance += 100;
                    Console.WriteLine("After crediting, balance is {0}", balance);
                }
            }
        }

        static void Debit()
        {
            for (int i = 0; i < 15; i++) 
            {
                lock(obj)
                {
                    balance -= 100;
                    Console.WriteLine("After debiting, balance is {0}", balance);
                }
            }
        }
        
        static void ShowTime()
        {
            while (true) {
                Console.WriteLine(DateTime.Now.ToString());
            }
        }
        
        static void DoSomething(object s)
        {
            string[] strs = s as string[];
            while (true) {
                Console.WriteLine("{0}-----{1}", strs[0], strs[1]);
            }
        }
        
    }
    
    class Guest
    {
        public string Name {get; set;}
        public int Age {get; set;}
        
        public void DoSomething()
        {
            while (true) {
                Console.WriteLine("{0} -- {1}", Name, Age);
            }
        }
        
    }
    
}

知识共享许可协议
《.NET 多线程执行函数》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
相邻依据:发表时间
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     158.85ms