zoukankan      html  css  js  c++  java
  • 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 WindowsApplication1
    {
        
    public partial class Form1 : Form
        {
            
    delegate void SendDelete(SendArgs args);
            
    public Form1()
            {
                InitializeComponent();
            }
            
    private void Form1_Load(object sender, EventArgs e)
            {
                
    this.comboBox1.SelectedIndex = 1;
                
    this.comboBox2.SelectedIndex = 3;


                Thread thread 
    = new Thread(CrossThreadFlush);
                thread.IsBackground 
    = true;
                thread.Start();
            }

            
    private void txt(SendArgs ar)
            {
                
    //根据传过来的comBox值执行一段自定义的动作。。
                MessageBox.Show(ar.str1, ar.str2);
            }

            
    private void CrossThreadFlush()
            {
                
    //while (true)
                
    //{
                    SendArgs args = new SendArgs();
                    
    //
                    
    //这里使用的是匿名委托
                    
    //
                    
    //    this.BeginInvoke((MethodInvoker)delegate{
                    
    //        args.str1 = this.comboBox1.Text;
                    
    //        //
                    
    //        //有几个都可以,在参数类里面加就可以了
                    
    //        //
                    
    //        args.str2 = this.comboBox2.Text;
                    
    //    }, args
                    
    //);

                    
    ////this.BeginInvoke(new SendDelete(InvokeMethod), args);  //异步
                    this.Invoke(new SendDelete(InvokeMethod), args);           //同步
                    txt(args);
                
    //}
            }

            
    void InvokeMethod(SendArgs args)
            {
                args.str1 
    = this.comboBox1.Text;
                
    //
                
    //有几个都可以,在参数类里面加就可以了
                
    //
                args.str2 = this.comboBox2.Text;
            }
        }


        
    public class SendArgs : EventArgs
        {
            
    public string str1;

            
    public string str2;

            
    public string str3;
        }
    }
  • 相关阅读:
    安卓环境配置
    [转载]MinGW安装过程
    [转载]解决Android studio新建项目慢的问题
    [转载]图文详解YUV420数据格式
    视频专家之路【四】:ffmpeg简单实战之获取属性
    视频专家之路【三】:Vs开发环境的搭建
    视频专家之路【二】:ffmpeg工具的使用
    视频专家之路【一】:音视频入门知识基础
    二值信号量和互斥锁到底有什么区别?
    【python标准库模块五】Xml模块学习
  • 原文地址:https://www.cnblogs.com/Fooo/p/1612383.html
Copyright © 2011-2022 走看看