滴水穿石 C#中多线程 委托的使用
下面是一个涉及线程和委托综合的小例子。
using System;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;//使用多线程的声明(准确的说是要在main主线程中建立新的线程时要进行的引
public partial class Form1 : Form
public static int Num = 0;
Thread thread1; //在主线程中声明线程1
Thread thread2; //在主线程中声明线程2
daililist list1;//委托实例化,即建立委托对应的事件
InitializeComponent();
list1 = new daililist(updatelist);//委托处理的方法,这里updatelist是一个方法,这个句子的意思是把updatelist这个方法交给了list1这个委托实例
thread1 = new Thread(numadd );
thread1.Start();
thread2.Start();
public void updatelist()
listBox1.Items.Add (Num) ;
public void numadd()
Num ++;
listBox1.Invoke(list1);//这是自己建立的线程要调用的方法,但是listbox1是main主线程建立的控件,自定义的线程无法直接访问,上面已经定义了委托,此处应用listbox1的invoke
//到此我们理一下思路,建立线程thread1、thread2,这两个线程都指向了numadd这个方法,首先都执行Num++,然后执行listBox1.Invoke(list1),意思是说将要对listbox1操作,
private void button2_Click(object sender, EventArgs e)
thread1.Join();
thread2.Abort();
}
}
}
using System.Collections.Generic;
using System.Data;
using System.Linq;
用说明) namespace mytest
{ {
delegate void daililist();//主线程之外的线程要调用main线程中建立的控件,需要使用委托的方式,此处是委托的定义
public Form1()
{
} private void button1_Click(object sender, EventArgs e)
{
thread2 = new Thread(numadd); }
{
}
{
//方法把所有对listbox1的操作都交给委托list1去处理。
//但是具体操作在list1这个委托当中,然后这个委托指向了updatelist并执行,至此thread1、thread2都完成了对listbox1的操作!
} {
thread1.Abort();
thread2.Join();
滴水穿石 C#中多线程 委托的使用的更多相关文章
- C#中多线程 委托的使用
背景: 什么是多线程?我们在建立以个C#项目时,往往会在Form1上添加控件,然后写代码,初 学者都是在重复这个过程,其实这个过程是单线程的,可以理解为只有“main”主线程,有 的时候往往需要同时 ...
- WinForm中 事件 委托 多线程的应用
WinForm中 事件 委托 多线程的应用[以一个下载进度条为例] 第一步:首先我们创建一个winfor的项目 第二步:我们建一个窗体在一个窗体里面 打开一个另外的窗体 另外的窗体有一个按钮 点击后就 ...
- C# winform编程中多线程操作控件方法
private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...
- 2.1多线程(java学习笔记) java中多线程的实现(附静态代理模式)
一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执 ...
- iOS中多线程知识总结(一)
这一段开发中一直在处理iOS多线程的问题,但是感觉知识太散了,所以就把iOS中多线程的知识点总结了一下. 1.基本概念 1)什么是进程?进程的特性是什么? 进程是指在系统中正在运行的一个应用程序. ...
- 2.C#中通过委托Func消除重复代码
阅读目录 一:重复的代码 二:C#中通过委托Func消除重复代码 一:重复代码 public class Persion { public string Name { get; set; } ...
- c++中实现委托
成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(clo ...
- [转] c#中 多线程访问winform控件
原文 c#中多线程访问winform控件的若干问题小结 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来解决这个问题,下面我将详细的 ...
- iOS 中多线程的简单使用
iOS中常用的多线程操作有( NSThread, NSOperation GCD ) 为了能更直观的展现多线程操作在SB中做如下的界面布局: 当点击下载的时候从网络上下载图片: - (void)loa ...
随机推荐
- Codeforces Round #260 (Div. 2) A , B , C 标记,找规律 , dp
A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Web前端理论知识记录
Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...
- poj 2106 Boolean Expressions 课本代码
#include<cstdio> const int maxn=100 +10; int val[maxn],vtop; int op[maxn],otop; void insert(in ...
- Linux基本语法
Shell编程 摘要: Shell历史 Shell的作用是解释用户的命令,用户输入一条命令,Shell就解释执行一条,这条方式称为交互式(interactive),Shell还有一种执行命令的方式称为 ...
- 用cookie登录慕课网络教学中心刷评论
声明:本文仅供学习参考 我们学校和的网络教学平台是在慕课网上的,需要登录到慕课网的教学平台以后,拿到cookie 注意:没次提交后需要休眠,否则刷评论过快会被系统发现 如果请求太快,很容易被系统发现( ...
- linux命令学习笔记(37):date命令
在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令 来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. .命令格式: date [参数 ...
- 【leetcode刷题笔记】Sqrt(x)
Implement int sqrt(int x). Compute and return the square root of x. 题解:二分的方法,从0,1,2.....x搜索sqrt(x)的值 ...
- bzoj1006神奇的国度
OrzCDQ您太强辣 #include<iostream> #include<cstdio> #include<cstdlib> #include<algor ...
- 清理:db上面的过期的binlog,释放磁盘空间。 (转)
如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了.大概思路:在 一台db跳转机上面, 写一个脚本,访问slave,远程获取正在复制的master上面的binl ...
- 如何得到DataTable的列名
foreach (DataColumn dc in dtfood.Columns) { string lm = dc.ColumnName; }