zoukankan      html  css  js  c++  java
  • C#编程应用线程与委托


    1. C#开发C/S程序,有时需要几个端,如服务器端,管理端,客户端等等, 端与端之间是不同线程或者进程,这就涉及跨线程调用的问题,

        使用委托或者异步线程是必不可少的,这里是一个简单的委托线程,即通过委托调用另外一个线程;

    2. 有图有真相:

       

    3. 源码:

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

    namespace ThreadControlExample
    {
        public partial class Form1 : Form
        {
            Thread thread1;
            Thread thread2;
            delegate void AppendStringDelegate(string str);
            AppendStringDelegate appendStringDelegate;
            public Form1()
            {
                InitializeComponent();
                appendStringDelegate = new AppendStringDelegate(AppendString);
            }

            private void AppendString(string str)
            {
               richTextBox1.Text += str;
            }

            private void Method1()
            {
                while (true)
                {
                    Thread.Sleep(100);   //线程1休眠100毫秒
                    richTextBox1.Invoke(appendStringDelegate, "a");
                }
            }
            private void Method2()
            {
                while (true)
                {
                    Thread.Sleep(100);   //线程2休眠100毫秒
                    richTextBox1.Invoke(appendStringDelegate, "b");
                }
            }

            private void buttonStart_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = "";
                thread1 = new Thread(new ThreadStart(Method1));
                thread2 = new Thread(new ThreadStart(Method2));
                thread1.Start();
                thread2.Start();
            }

            private void buttonStop_Click(object sender, EventArgs e)
            {
                thread1.Abort();
                thread1.Join();
                thread2.Abort();
                thread2.Join();
                MessageBox.Show("线程1、2终止成功");
            }

        }
    }
  • 相关阅读:
    转载:Background Worker in .NET 2.0
    转载:WPF 3.5 SP1 Feature: BindingGroups with Itemlevel Validation
    转载:NonLive Scrolling延时滚动数据
    俺的机器上VS的MenuBar的名称列表
    动态控件的状态问题的分析 概括
    基于插件的权限系统构想
    《ASP.NET组件设计》没提到的一个类
    有关集中用户的问题
    SQL Server日志清空方法
    ADO事务处理方式运行正常
  • 原文地址:https://www.cnblogs.com/dzone/p/2194934.html
Copyright © 2011-2022 走看看