科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C#的多线程机制探索

C#的多线程机制探索

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文中出现的代码均在.net Framework RC3环境中运行通过......

作者:挽留刀 来源:Yesky 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
然后在下面这个类MonitorSample的Main()函数中我们要做的就是创建两个线程分别作为生产者和消费者,使用CellProd.ThreadRun()方法和CellCons.ThreadRun()方法对同一个Cell对象进行操作。

public class MonitorSample
{
  public static void Main(String[] args)
  {
  int result = 0; file://一个标志位,如果是0表示程序没有出错,如果是1表明有错误发生
  Cell cell = new Cell( );

  //下面使用cell初始化CellProd和CellCons两个类,生产和消费次数均为20次
  CellProd prod = new CellProd(cell, 20);
  CellCons cons = new CellCons(cell, 20);

  Thread producer = new Thread(new ThreadStart(prod.ThreadRun));
  Thread consumer = new Thread(new ThreadStart(cons.ThreadRun));
  //生产者线程和消费者线程都已经被创建,但是没有开始执行

  try
  {
    producer.Start( );
    consumer.Start( );

    producer.Join( );
    consumer.Join( );
    Console.ReadLine();
  }
  catch (ThreadStateException e)
  {
    file://当线程因为所处状态的原因而不能执行被请求的操作
    Console.WriteLine(e);
    result = 1;
  }
  catch (ThreadInterruptedException e)
  {
    file://当线程在等待状态的时候中止
    Console.WriteLine(e);
    result = 1;
  }
  //尽管Main()函数没有返回值,但下面这条语句可以向父进程返回执行结果
  Environment.ExitCode = result;
  }
}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章