您的位置:首页 > 编程语言 > C#

C# :线程中操作多控件 (委托实现异步及同步的方法)

2009-11-27 23:39 1106 查看
代码

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐