第一种:通过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. 2024最新免费IP地址SSL证书申请

    为IP地址申请免费的SSL证书相对较为困难,因为多数证书颁发机构(CA)提供的免费SSL证书主要是基于域名的.不过,还是可以尝试以下方法来申请免费的IP地址SSL证书: 一.确认IP地址与了解需求 确 ...

  2. Java根据前端返回的字段名进行查询数据的方法

    在Java后端开发中,根据前端返回的字段名动态查询数据库是一种常见的需求.这种需求通常通过使用反射和动态SQL来实现.下面是一个完整的代码示例,它展示了如何根据前端返回的字段名动态查询数据库中的数据. ...

  3. 霍夫丁(Hoeffding)不等式证明

    马尔可夫不等式 结论 对于任意非负随机变量$X$,$\forall \epsilon>0$,有: $\displaystyle P(X\ge\epsilon)\le\frac{E(X)}{\ep ...

  4. etcd错误:Failed to defragment etcd member[127.0.0.1:2379] (context deadline exceeded)

    etcd 版本 # etcdctl version etcdctl version: 3.5.1 API version: 3.5 问题 在 执行 etcdctl --endpoints=http:/ ...

  5. luasql使用问题记录:module 'luasql.mysql' not found

    安装版本 # lua -v Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio # apisix version /usr/local/openres ...

  6. json-lib(ezmorph)、gson、flexJson、fastjson、jackson对比,实现java转json,json转java

    json-lib(ezmorph).gson.flexJson.fastjson.jackson对比,实现java转json,json转java 本文中所讲的所有代码都在此:json-test 目前关 ...

  7. Java中private方法能重写吗?

    问题:Java中private方法能重写吗? 下面是测试代码 public class A { private void print() { System.out.println("A&qu ...

  8. golang之Time时间函数

    在编程中,我们经常会遭遇八小时时间差问题.这是由时区差异引起的,为了能更好地解决它们,我们需要理解几个时间定义标准. GMT(Greenwich Mean Time),格林威治平时.GMT 根据地球的 ...

  9. AI工具推荐——Cherry Studio

    Cherry Studio介绍 Cherry Studio是一款支持多模型服务的 Windows/macOS GPT 客户端. 它的主要特点如下: 多样化的大型语言模型提供商支持 ️ 主要的大型语言模 ...

  10. 数据万象推出智能检索MetaInsight,现已开启限时公测

    海量文件的分析统计一直是对象存储COS的热点需求,伴随AIGC飞速迭代发展,在众多不同模态素材的海洋中,用户也急需更高效地管理和利用多媒体内容,打破传统搜索的桎梏. 数据万象推出的智能检索 MetaI ...