• c# 委托的一种写法


    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 WindowsApplication19
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            //声明事件委托
            private delegate void delUpdate(string s);


            void update(string s)
            {
                if (label1.InvokeRequired) // 当在其它线程中更新LABEL控件时,为true;否则为false
                {
                    delUpdate du = new delUpdate(update);

                    //指定委托.程序运行到这里,会再执行一次update(),但
                    //label1.InvokeRequired值为false,相当如在主线程中执行更新动作
                    label1.Invoke(du, new object[] { s});
                }
                else
                {
                    //在主线程中执行更新动作
                    label1.Text = s;
                }
            }

            void refresh()
            {
                for (int i = 0; i < 10000; i++)
                {
                    update(i.ToString());
                }

                thd.Abort();
                thd = null;
            }

            Thread thd;
            private void button1_Click(object sender, EventArgs e)
            {
                thd = new Thread(refresh);
                thd.Start();
            }

            private void button2_Click(object sender, EventArgs e)
            {
                update("hello");
            }
        }
    }
  • 相关阅读:
    C语言文件操作
    scrapy 提取XML文档
    汇编指令和寄存器
    C语言知识点
    sqlalchemy 的sqlite多线程设置
    Unity 打AssetBundle和加载方案
    unity 4种实现动态障碍方法
    入心诗词记
    人间问答
    生活中有哪些实用的心理学知识?
  • 原文地址:https://www.cnblogs.com/baishahe/p/1186558.html
Copyright © 2020-2023  润新知