第一种:通过Invoke()在应用程序的主线程上执行指定的委托

//新开一个线程,显示当前时间
new Thread(o =>
{
while (true)
{
Thread.Sleep(1000);
Invoke((Action)delegate
{
this.textBox1.Text= DateTime.Now.ToString();
});
}
})
{ IsBackground = true }.Start();

第二种:使用类BackgroundWorker

//声明后台工作对象
BackgroundWorker BgWork = new BackgroundWorker();
//绑定事件
private void Form1_Load(object sender, EventArgs e)
{
BgWork.DoWork += BgWork_Demo;
BgWork.RunWorkerAsync();
}
//要后台执行的函数
void BgWork_Demo(object sender, DoWorkEventArgs e)
{
try
{
Random rd = new Random();
int i=rd.Next(1,3);
if (i=1)
{
this.Invoke((EventHandler)(delegate { this.textBox1.Text = "成功就行怀孕,大家都会恭喜你!"; }));
}
else
this.Invoke((EventHandler)(delegate { this.textBox1.Text = "但是没有人知道《你被搞了》多少遍才成功!"; }));
}
catch (Exception ex)
{
MessageBox.Show("程序出来点小问题..." + ex.Message, "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
}

第三种:使用一个Timer结合异步委托方法

Timer tm = new Timer();
private void Form_Load(object sender, EventArgs e)
{
tm.Interval = 1000;
tm.Tick += tm_Tick;
this.BeginInvoke((EventHandler)(delegate { tm.Start(); }));
} void tm_Tick(object sender, EventArgs e)
{
if (1 == 2)
{
tm.Stop();
//do something...
}
}

今天的知识就到这里啦,学会了没有。

C#中多线程实现后台任务的三种方式的更多相关文章

  1. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  2. Tomcat中部署web应用的三种方式

    Tomcat中部署web应用的三种方式(静态部署)       第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...

  3. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  4. Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  5. [转]Linux中设置服务自启动的三种方式

    from:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...

  6. Linux中设置服务自启动的三种方式,ln -s 建立启动软连接

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务(http://www.0830120.com) 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立 ...

  7. python 中增加css样式的三种方式

    增加css样式的三种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  8. (转)Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  9. 【转发】Linux中设置服务自启动的三种方式

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/e ...

  10. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

随机推荐

  1. CSP-J2024 T1(poker/扑克)题解

    洛谷CSP-J 2024自测指路 前情提要:虽然洛谷讨论区里大多数都是倾向用哈希解决该题,但实际上可以用一些邪门小技巧来A这道题awa 先来读题. 题目中说小 P 想知道他至少得向小 S 借多少张牌, ...

  2. java——棋牌类游戏五子棋(webwzq1.0)之三(Msg)

    package msg; import java.io.ObjectInputStream; import java.net.DatagramSocket; /******************** ...

  3. 从零打造基础HTTP服务器:揭秘背后的技术魔法-MiniTomcat

    <从零打造基础HTTP服务器:揭秘背后的技术魔法-MiniTomcat> 嘿,各位技术发烧友们!今天咱们要一起踏上一段超级刺激的技术之旅,去揭开从零实现一个基础HTTP服务器的神秘面纱.这 ...

  4. Win10多用户同时登陆

    1. 说明: (1)Win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016. (2)Win10正常情况下是不允许用户同时远程的,即一个 ...

  5. @EnableAutoConfiguration 标签使用

    @EnableAutoConfiguration 这个注解的作用是: 从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframe ...

  6. canvas(八)绘制图片和坐标转换

    1.绘制图片 相关api及其参数:ctx.drawImage() 参数 说明 参数一 图片对象 参数二,三 可选,图片裁剪的基点(原图左上角为原点) 参数四,五 可选,图片裁剪区域的宽高(基于原图大小 ...

  7. 开源 - Ideal库 - Excel帮助类,ExcelHelper实现(五)

    书接上回,我们继续来聊聊ExcelHelper的具体实现. 01.读取Excel到DataSet单元测试 在上一章我们主要讲解了读取Excel到DataSet的三个重载方法具体实现,还没来得及做单元测 ...

  8. Python实验:Socket编程

    实验六 Socket 编程 一.实验目标: 了解TCP协议原理.标准库socket 的用法.熟悉Socket 编程. 1.TCP协议原理: TCP(Transmission Control Proto ...

  9. 生产环境BigDecimal用错了,已哭晕在厕所。。。

    大家好,我是苏三,又跟大家见面了. 前言 在日常开发中,很多小伙伴喜欢用 BigDecimal 来处理精确计算,比如钱.分数.比例啥的. 理论上,它比 double 或 float 更精确,但如果你用 ...

  10. 【Amadeus原创】Docker安装wikijs wiki系统

    拉取mysql8的镜像并运行 docker pull mysql docker run -d -v /data/mysql/data:/var/lib/mysql -v /data/mysql/con ...