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;
        }
    }
  • 相关阅读:
    ld: library not found for -lstdc++.6
    WebViewJavascriptBridge 进行js 与native通信。
    invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    OC 与 js 界面JSBridge交互
    react-native init的时候出现问题:npm WARN React-native@0.35.0 requires a peer of react@~15.3.1 but none was
    react-无状态组件
    2018年末--积极拥抱h5.转载 大前端时代来临,我们何去何从?
    /Users/macbook/Library/Developer/Xcode/DerivedData/MapViewDemo: No such file or direc
    EXCEL中如何获得工作表(sheet)的名称
    DELPHI中Showmodal与Show的区别
  • 原文地址:https://www.cnblogs.com/Fooo/p/1612383.html
Copyright © 2011-2022 走看看