• 初步学习多线程操作,代码不是完美的,欢迎大牛指点(运行通过)


     如需转载,注明:Copyright ©Mr.Smart  zdwloveschina@gmail.com

    //第一个program类

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Collections;
     5 using System.IO;
     6 using System.Text;
     7 using System.Threading;
     8 
     9 namespace AboutTheardTest
    10 {
    11     class Program
    12     {
    13         static void Main(string[] args)
    14         {
    15             Thread t_W, t_R;
    16             WriteToTxt wt = new WriteToTxt();
    17             ReadFromTxt rf = new ReadFromTxt(3000);
    18             t_W = new Thread(new ThreadStart(wt.first));
    19             t_R = new Thread(new ThreadStart(rf.Reader));
    20             t_W.Priority = ThreadPriority.Highest;
    21             t_R.Priority = ThreadPriority.Normal;
    22             t_W.Start();
    23             t_R.Start();
    24         }
    25     }
    26 }
    //第二个WriteToTxt类
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.IO;
     6 using System.Threading;
     7 
     8 
     9 namespace AboutTheardTest
    10 {
    11     class WriteToTxt
    12     {
    13         public void first()
    14         {
    15             int i = 1;
    16             write(i);
    17         }
    18         public void write(int i)
    19         {
    20             int j = i;
    21             FileStream fs = new FileStream(@"E:ThreadTest.txt", FileMode.Append);
    22             StreamWriter sw = new StreamWriter(fs);           
    23             try
    24             {
    25                 if (i >= 51)
    26                 {
    27                     for (int k = i; k <= 100; k++)
    28                     {
    29                         Console.WriteLine("第  {0} 次写入",k);
    30                        sw.WriteLine("第 {0} 次写入,I want to be a great Coder! fighter!", k);
    31                        if(k == 100)
    32                         {
    33                             Console.WriteLine("此时是第 {0} 次写入。运行结束",k);                           
    34                         }
    35                     }                   
    36                 }
    37                 else
    38                 {
    39                     lock (this)
    40                     {
    41                         for(j = 1;j<50;j++)
    42                         {
    43                             Console.WriteLine("第 {0} 次写入",j);
    44                             sw.WriteLine("第 {0} 次写入,I want to be a great Coder! fighter!", j);
    45                         }
    46                          sw.WriteLine("第 {0} 次写入,I want to be a great Coder! fighter!", j);
    47                          sw.Close();
    48                          fs.Close();
    49                          Console.WriteLine("---------------------正在等读出操作完成---------------------------");
    50                          Monitor.Wait(this);
    51                         // Monitor.Pulse(this);
    52                     }
    53                 }            
    54             }
    55             catch (Exception e)
    56             {
    57                 Console.WriteLine("write_ERROR:" + e.Message);
    58             }
    59             finally
    60             {
    61                 sw.Close();
    62                 fs.Close();
    63             }
    64         }
    65     }
    66 }

    //第三个ReadFromTxt类

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.IO;
     6 using System.Threading;
     7 
     8 namespace AboutTheardTest
     9 {
    10     class ReadFromTxt
    11     {
    12         int times;
    13         public ReadFromTxt(int times)
    14         {
    15             this.times = times;
    16         }
    17         public void Reader()
    18         {
    19             Console.WriteLine("--------正在等写入完成--------");
    20             Thread.Sleep(times);
    21             Console.WriteLine("--------启动读出线程----------");
    22             string strLine;
    23             FileStream Fs = new FileStream(@"E:ThreadTest.txt", FileMode.Open);
    24             StreamReader sr = new StreamReader(Fs);
    25             try
    26             {
    27                 lock (this)
    28                 {
    29                     strLine = sr.ReadLine();
    30                     for(int i = 1;i<51;i++)
    31                     {
    32                         while (strLine != null)
    33                         {
    34                             Console.WriteLine("读出数据:{0}", strLine);
    35                             strLine = sr.ReadLine();
    36                         }
    37                     }
    38                     sr.Close();
    39                     Fs.Close();
    40                     //Monitor.Wait(this);
    41                     Monitor.PulseAll(this);
    42                     
    43                     WriteToTxt w = new WriteToTxt();
    44                     w.write(51);
    45                 }
    46             }
    47             catch (Exception e)
    48             {
    49                 Console.WriteLine("Read_ERROR:"+e.Message);
    50             }
    51         }
    52     }
    53 }
  • 相关阅读:
    Linux中的Diff和Patch
    旧磁带,新风险
    Mac下体验Hexo与Github Pages搭建
    Sublime Text 3 提高工作效率的使用技巧
    PHPExcel对于Excel中日期和时间类型的处理
    做Adsense的一些经验
    使用Fusioncharts实现后台处理进度的前台展示
    iOS: 数据持久化方案
    开发中,理解高内聚、低耦合
    iOS: lame框架将PCM录音转成MP3格式
  • 原文地址:https://www.cnblogs.com/struCoder/p/3373260.html
Copyright © 2020-2023  润新知