C#关于跨线程访问控件信息和创建控件
来源:互联网 发布:奇商网络 编辑:程序博客网 时间:2024/06/05 02:55
跨线程创建创建控件和刷新数据需要使用到委托,C#里面BeginInvoke属于是异步调用,Invoke属于是同步调用
示例包含跨线程实现跨线程访问lable数据和创建控件。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Threading;namespace WindowsFormsApplication3{ public partial class Form1 : Form { public delegate void update_lable(string str); static update_lable update_lable_object; public delegate bool add_controls(); static add_controls add_controls_object; public Form1() { InitializeComponent(); update_lable_object = new update_lable(update_lable_func); Thread update_lable_thread = new Thread(update_lable_thread_func); update_lable_thread.IsBackground = true; update_lable_thread.Start(); add_controls_object = new add_controls(add_controls_func); Thread add_control_thread = new Thread(add_control_thread_func); add_control_thread.IsBackground = true; add_control_thread.Start(); } public void update_lable_thread_func() { int count = 0; while (count <= 6) { try { // 属于是同步调用 this.Invoke(update_lable_object, "test" + count ); Thread.Sleep(5000); } catch (Exception e){ MessageBox.Show(e.Message); } finally { this.Close(); // 退出程序 } count++; } } public void add_control_thread_func() { try { Thread.Sleep(5000); // 属于是异步调用 this.BeginInvoke(add_controls_object); } catch (Exception e) { MessageBox.Show(e.Message); } finally { this.Close();// 退出程序 } } public void update_lable_func(string str) { label1.Text = str; } public bool add_controls_func() { try { Label lable = new Label(); lable.Top = 20; lable.Left = 30; lable.Size = new Size(80, 30); lable.Text = "sdasdad"; Controls.Add(lable); return true; }catch(Exception e){ MessageBox.Show(e.Message); return false; } } }}
0 0
- C#关于跨线程访问控件信息和创建控件
- C# 关于跨线程访问控件问题
- 关于 c# 其他信息:线程间操作无效: 从不是创建控件xxx的线程访问它。
- C# 跨线程访问控件
- c#跨线程访问控件
- c#跨线程访问控件
- C# 线程访问控件
- c#关于“线程间操作无效: 从不是创建控件的线程访问它”的问题
- C#跨线程访问WinForm控件
- C#中的跨线程访问窗体控件
- C# WinForm 跨线程访问控件
- C#c# 从不是创建控件 的线程访问它。
- C#线程中访问控件
- C#工作线程访问控件
- 关于"从不是创建控件的线程访问它”
- 关于"从不是创建控件的线程访问它”
- 关于子线程访问主线程创建的控件
- 关于"从不是创建控件的线程访问它”
- DP入门
- Linux01
- jdk下载、安装、配置环境变量、javac不是内部或外部命令
- 关于web_reg_find如何校验中文字符
- $.cookies用法
- C#关于跨线程访问控件信息和创建控件
- Netty入门之创建Maven多模块依赖项目
- HDU
- IT人的算法书单:挖掘程序的灵魂
- Volley 源码解析
- CocoaPods 简易安装和使用
- Servlet生命周期
- Ajax请求SpringMVC出现406的错误
- #2002 无法登录 MySQL 服务器