C#多线程开发,简单示例-字符串并发处理
C#多线程开发,简单示例-字符串并发处理
编程码农 发表于2年前
C#多线程开发,简单示例-字符串并发处理
  • 发表于 2年前
  • 阅读 20
  • 收藏 0
  • 点赞 2
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

源码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;


namespace PracticeThreadAppendString
{
    public partial class threadAppendStrForm : Form
    {
        StringBuilder sb = new StringBuilder();
        Thread threadA, threadB;
        public bool isStart = false;

        private void appendString(string s)
        {
            lock (sb)
            {
                sb.Append(s);
            }
        }
        private void methodA()
        {
            while (true)
            {
                if( !this.isStart){
                    break;
                }
                Thread.Sleep(100);
                appendString("A");
            }
        }
        private void methodB()
        {
            while (true)
            {
                if( !this.isStart){
                    break;
                }
                Thread.Sleep(100);
                appendString("B");
            }
        }
        public threadAppendStrForm()
        {
            InitializeComponent();
        }

        private void startThreadButton_Click(object sender, EventArgs e)
        {
            if (this.isStart)
            {
                return;
            }
            this.isStart = true;
            //清空缓冲区
            sb.Remove(0, sb.Length);
            appendStrTimer.Enabled = true;
            threadA = new Thread(new ThreadStart(methodA));
            threadB = new Thread(new ThreadStart(methodB));
            threadA.Start();
            threadB.Start();

        }

        private void exitThreadButton_Click(object sender, EventArgs e)
        {
            this.isStart = false;
            
        }

        private void appendStrTimer_Tick(object sender, EventArgs e)
        {
            if(threadA.IsAlive == true || threadB.IsAlive == true){
                showRichTextBox.Text = sb.ToString();
            }else{
                appendStrTimer.Enabled = false;
            }
        }
    }
}

效果如下:

 

标签: 多线程处理
共有 人打赏支持
粉丝 2
博文 19
码字总数 13170
×
编程码农
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: