文档章节

C#多线程开发,简单示例-字符串并发处理

编程码农
 编程码农
发布于 2016/05/15 14:44
字数 159
阅读 47
收藏 0

源码如下:

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;
            }
        }
    }
}

效果如下:

 

© 著作权归作者所有

共有 人打赏支持
编程码农
粉丝 1
博文 19
码字总数 13170
作品 0
杭州
后端工程师
私信 提问
C# WinForm开发系列 - Socket/WCF/Rometing/Web Services

当今社会是一个信息化社会, 网络越来越多地影响人民的生活, 带来巨大的便利性; 而网络通信在软件开发中占据相当大的比重. Socket/WCF/Rometing/Web Services 各种技术纷至踏来, 应用广泛; 而...

长征2号
2017/08/11
0
0
C#中多线程和异步

C#中异步和多线程的区别是什么呢?异步和多线程两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为异步和多线程是等同的概念。但是,异步和多线程还是有...

bigSoul
2017/06/08
0
0
C#多线程lock解决数据同步

1.代码实例: { } 使用lock锁前后结果对比: 使用Lock锁前,多线程修改同一数据会出现相同结果, 使用Lock锁后,修改数据保证了数据的在多个线程操作时的同步。 2.使用Lock锁前后的性能对比:...

小麋鹿666
2017/02/04
0
0
C#-JudgeSystem判题系统-客户端和多线程

运行环境: vs2013 框架: .net4.5 上次实验中已经实现了单线程下的socket的tcp服务器 由于使用浏览器并不能直观的显示socket之间的交互相应,所以这次实验我们先完成客户端部分的编程再进行服...

tmj
2015/08/19
0
0
并行编程(Parallel Framework)

前言 并行编程:通过编码方式利用多核或多处理器称为并行编程,多线程概念的一个子集。 并行处理:把正在执行的大量的任务分割成小块,分配给多个同时运行的线程。多线程的一种。 并行编程分...

Jonins
09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

工作中如何做好技术积累

参考:https://tech.meituan.com/study_vs_work.html 看了这篇文章,觉得总结得非常好,因此摘抄了一些关键点,以便自己经常翻阅。 引言 在繁忙的工作中做好技术积累,构建个人核心竞争力. 在...

grace_233
28分钟前
4
0
day146-2018-11-13-英语流利阅读-待学习

5 岁“牛娃”简历给 985 精英一个暴击 Lala 2018-11-13 1.今日导读 “不要让孩子输在起跑线上”,似乎已成为了当下最流行的名句,每个身为家长或还未成为家长的人都不得不思考这句话的分量。...

飞鱼说编程
41分钟前
4
0
Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
4
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
5
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部