1.简单线程实例 以及委托(同步委托、异步委托)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.Remoting.Messaging; namespace ThreadTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("主线程运行中.....{0}",Thread.CurrentThread.ManagedThreadId); #region 线程 Thread thread = new Thread(new ThreadStart(ShowMsg)); //只是 建议操作系统把当前线程当成 低级别
thread.Priority = ThreadPriority.Lowest; //给开发人员用,来识别不同系统
thread.Name = "threadtest"; //后台线程:如果所有的前台线程都退出了,那么后台线程自动关闭
thread.IsBackground = true; //并没有执行,告诉操作系统
thread.Start(); //关闭线程
//thread.Abort(); #endregion /* #region 异步委托 AddDel addDel = new AddDel(Add); int result = 0; //同步调用,当前线程去调用
//int result = addDel(1, 2); //第一种:回调函数 //启动委托指向的方法执行,具体有线程池提供一个线程来执行当前的委托执行的方法
//IAsyncResult asynResult = addDel.BeginInvoke(1, 2, null, null); //此EndInvoke方法会阻塞当前线程,直到委托方法执行完毕后,并将返回值交result后,继续执行后面代码
//int result = addDel.EndInvoke(asynResult); //第二种:使用回调函数 IAsyncResult ascResult = addDel.BeginInvoke(1, 2, new AsyncCallback(MyDelCallBack), 33); //Console.WriteLine("result:{0}", result); #endregion
**/ Console.WriteLine("主线程执行完成..."); Console.ReadKey();
} public delegate int AddDel(int a, int b); public static int Add(int a,int b)
{
Console.WriteLine("工作线程工作着....{0}",Thread.CurrentThread.ManagedThreadId); Thread.Sleep(); return a+b;
} //异步委托 执行完成了的回调函数
public static void MyDelCallBack(IAsyncResult asyResult)
{
//将接口类型转换成实例类型
AsyncResult aResult = (AsyncResult)asyResult; //判断委托是否执行完成
while(!aResult.IsCompleted)
{ //主线程干些时间
//防止主线程阻塞 } //转换成我们自己的委托类型
AddDel addDelResult = (AddDel)aResult.AsyncDelegate; //获取回调状态值
int state = (int)aResult.AsyncState; //执行完成获取 执行的结果
int result = addDelResult.EndInvoke(asyResult); Console.WriteLine("异步完成的回调方法执行的结果:{0}----回调状态:{1}----线程id:{2}",result,state,Thread.CurrentThread.ManagedThreadId); } static void ShowMsg()
{
Console.WriteLine("ShowMsg方法----工作线程工作着....{0}",Thread.CurrentThread.ManagedThreadId); Thread.Sleep(); }
}
}

C# 简单线程实例的更多相关文章

  1. C#常用简单线程实例

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  2. Linux简单程序实例(GNU工具链,进程,线程,无名管道pipe,基于fd的文件操作,信号,scoket)

    一, GNU工具链简介: (1)编译代码步骤: 预处理 -> 编译 -> 汇编 -> 链接: 预处理:去掉注释,进行宏替换,头文件包含等工作: gcc -E test.c -o te ...

  3. Redis:安装、配置、操作和简单代码实例(C语言Client端)

    Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...

  4. ASP.NET MVC 4 插件化架构简单实现-实例篇

    先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...

  5. MVC 4 插件化架构简单实现实例篇

    ASP.NET MVC 4 插件化架构简单实现-实例篇   先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集 ...

  6. 分布式搜索ElasticSearch构建集群与简单搜索实例应用

    分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...

  7. 运用Unity实现依赖注入[结合简单三层实例]

    运用Unity实现依赖注入[结合简单三层实例] 一:理论部分 依赖注入:这是 Ioc 模式的一种特殊情况,是一种基于改变对象的行为而不改变类的内部的接口编程技术.开发人员编写实现接口的类代码,并基于接 ...

  8. 原生Ajax用法——一个简单的实例

    Ajax全名(Asynchronous(异步) JavaScript and XML )是可以实现局部刷新的 在讲AJax之前我们先用简单的实例说一下同步和异步这个概念 /*异步的概念(就是当领导有一 ...

  9. Linux多线程实践(9) --简单线程池的设计与实现

    线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收.所以 ...

随机推荐

  1. Linux、Debian、Jenkins、GIT、Nginx、码云安装,自动化部署前后端分离项目

    1.安装Jenkins i:下载Jenkins安装包(war文件):https://jenkins.io/download/ ii:这里采用Tomcat的war包方式安装,讲下载好的安装包放到Tomc ...

  2. codeforces625C

    K-special Tables CodeForces - 625C 人们经常做一些疯狂的事来凸显自己.有的人跳舞,有的人撩妹,有的人立志成为顶级程序猿(例如某peng),还有的人喜欢收集有趣的数学对 ...

  3. Ubuntu 18.10 版本发布

    Ubuntu 是一个基于 Debian 的以桌面为主的 Linux 发行版,以其应用性而闻名.Ubuntu 提供三种官方版本:用于个人计算机的 Ubuntu 桌面,用于服务器和云的 Ubuntu 服务 ...

  4. BZOJ4025 二分图(线段树分治+并查集)

    之前学了一下线段树分治,这还是第一次写.思想其实挺好理解,即离线后把一个操作影响到的时间段拆成线段树上的区间,并标记永久化.之后一块处理,对于某个节点表示的时间段,影响到他的就是该节点一直到线段树根的 ...

  5. MVC DropDownList

    最近发现一个 MVC中绑定前台DropDownList , 并且设置默认选中项的简单方法. 直接上代码 方案一 Action:  ViewData["goodsTypeList"] ...

  6. QAU 18校赛 J题 天平(01背包 判断能否装满)

    问题 J: 天平 时间限制: 1 Sec  内存限制: 128 MB提交: 36  解决: 9[提交][状态][讨论版][命题人:admin] 题目描述 天平的右端放着一件重量为w的物品.现在有n个重 ...

  7. Codeforces Round #420 (Div. 2) A,B,C

    A. Okabe and Future Gadget Laboratory time limit per test 2 seconds memory limit per test 256 megaby ...

  8. BZOJ 4556: [Tjoi2016&Heoi2016]字符串(后缀数组 + 二分答案 + 主席树 + ST表 or 后缀数组 + 暴力)

    题意 一个长为 \(n\) 的字符串 \(s\),和 \(m\) 个询问.每次询问有 \(4\) 个参数分别为 \(a,b,c,d\). 要你告诉它 \(s[a...b]\) 中的所有子串 和 \(s ...

  9. UOJ #314. 【NOI2017】整数 | 线段树 压位

    题目链接 UOJ 134 题解 可爱的电音之王松松松出的题--好妙啊. 首先想一个朴素的做法! 把当前的整数的二进制当作01序列用线段树维护一下(序列的第i位就是整数中位权为\(2^k\)的那一位). ...

  10. JavaScript窗体Window.ShowModalDialog使用详解

    Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等. 然而IE提供更多的方法支持对话框.如: s ...