博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程简单示例
阅读量:6679 次
发布时间:2019-06-25

本文共 3224 字,大约阅读时间需要 10 分钟。

转自原文

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Runtime.Remoting.Messaging;namespace ThreadMulti{    class Program    {        delegate string MyDelegate(string msg);        static object locker=new object();        static void Main(string[] args)        {            System.Console.WriteLine("---------------------");            WriteLine("Main Thread example.", ConsoleColor.Green);            WriteLine("Async Thread example.", ConsoleColor.Red);            WriteLine("Async Thread CallBack", ConsoleColor.Cyan);            System.Console.WriteLine("---------------------\n");            WriteLine("Main Thread Begin ,ThreadId is : " + Thread.CurrentThread.ManagedThreadId, ConsoleColor.Green);            MyDelegate myDelegate = new MyDelegate(Messgae);            //异步调用,传入参数为object类型,此处用stirng示例            myDelegate.BeginInvoke("Hello Thread World!", Completed, "传参示例");            //模拟线程工作,可以看到两线程同时工作            for (int i = 0; i < 5; i++)            {                Thread.Sleep(1000);                WriteLine("Main Thread Works!", ConsoleColor.Green);            }            WriteLine("Main Thread Complete!", ConsoleColor.Green);            Console.ReadKey();        }        static string Messgae(string msg)        {            WriteLine("Async Thread Begin ,ThreadId is : " + Thread.CurrentThread.ManagedThreadId, ConsoleColor.Red);            //模拟线程工作,可以看到两线程同时工作            for (int i = 0; i < 5; i++)            {                Thread.Sleep(500);                WriteLine("Async Thread Works!", ConsoleColor.Red);            }            WriteLine("Async Thread Complete!", ConsoleColor.Red);            return msg;        }        static void Completed(IAsyncResult iresult)        {            //通过 Thread.CurrentThread.ManagedThreadId 可以看出,回调函数运行在异步线程上            WriteLine("Async Thread CallBack Begin,ThreadId is : " + Thread.CurrentThread.ManagedThreadId, ConsoleColor.Cyan);            AsyncResult result = iresult as AsyncResult;            //使用AsyncDelegate获得委托            MyDelegate myDelegate = result.AsyncDelegate as MyDelegate;            //使用EndInvoke获取返回值            string data = myDelegate.EndInvoke(result);            //用 AsyncState 获得传入的参数(即19行“传参示例”四个字)            string asyncState = result.AsyncState.ToString();            WriteLine("返回的数据:"+data, ConsoleColor.Cyan);            WriteLine("异步调用结果状态:" + asyncState, ConsoleColor.Cyan);            //模拟回调函数工作            for (int i = 0; i < 3; i++)            {                Thread.Sleep(500);                WriteLine("Async Thread CallBack Works!", ConsoleColor.Cyan);            }            WriteLine("Async Thread CallBack Complete!", ConsoleColor.Cyan);        }        static void WriteLine(string data, ConsoleColor color)        {            lock (locker)            {                Console.ForegroundColor = color;                Console.WriteLine(data);                Console.ResetColor();             }        }    }}

 

结果:

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6697800.html
,如需转载请自行联系原作者
你可能感兴趣的文章
iOS UI 15 网络编程下载 图片 音乐 大文件 视频 get/ post方法
查看>>
linux文件系统 - 初始化(二)
查看>>
Python的可视化图表工具集
查看>>
《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》
查看>>
Python的优点与功能
查看>>
三个文件,
查看>>
webpack的总结
查看>>
hibernate 一级缓存和二级缓存
查看>>
javac不是内部或外部命令
查看>>
mvc SelectList selected失效的解决方法
查看>>
JAVA 设计模式 中介者模式
查看>>
我的软件工程课目标
查看>>
var a={n:1}; var b=a; a.x=a={n:2}; console.log(a.x); console.log(b.x);
查看>>
【HDOJ】3016 Man Down
查看>>
window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;...
查看>>
查看本机IP分为两种情况:
查看>>
Scala进阶之路-Scala特征类与unapply反向抽取
查看>>
洛谷P3057 [USACO12NOV]远处的牧场Distant Pastures
查看>>
hdu3415 Max Sum of Max-K-sub-sequence 单调队列
查看>>
6421B Lab2 DHCP的配置及故障排除
查看>>