异步编程中使用帮助类来实现Thread.Start()的示例

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading;
 6 
 7 namespace ConsoleApplication9
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13 
14 
15             // 异步调用 
16             // 将需传递给异步执行方法数据及委托传递给帮助器类 
17             ThreadWithState tws = new ThreadWithState(
18                "This report displays the number {0}.",
19                42,
20                new ExampleCallback(ResultCallback)
21             );
22             Thread t = new Thread(new ThreadStart(tws.ThreadProc));
23             t.Start();
24             Console.ReadKey();
25         }
26 
27         static void ResultCallback(int i)
28         {
29             Console.Write("No." + i + "\n");
30         }
31     }
32 }
33 
34 // 包装异步方法的委托 
35 public delegate void ExampleCallback(int lineCount); 
36 // 帮助器类 
37   
38 public class ThreadWithState 
39 { 
40     private string boilerplate; 
41     private int value; 
42     private ExampleCallback callback; 
43    
44     public ThreadWithState(string text, int number, 
45         ExampleCallback callbackDelegate) 
46   
47     { 
48         boilerplate = text; 
49         value = number; 
50         callback = callbackDelegate; 
51     } 
52   
53     public void ThreadProc() 
54     { 
55         Console.WriteLine(boilerplate, value); 
56         // 异步执行完时调用回调 
57         if (callback != null) 
58             callback(1); 
59     } 
60 } 

运行结果:

摘自:http://www.cnblogs.com/heyuquan/archive/2012/12/16/2820775.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

.NET程序优化(GCServer )

现在的服务器都是多个cpu,在.NET Framework 2.0在GC上有个新特性GCServer ,不知道有多少人用过这个东东。 关于GC可以看这篇文章GC...

1987
来自专栏地方网络工作室的专栏

打造黑苹果(四)安装MACOS系统

打造黑苹果(四)安装MACOS系统前情回顾打造黑苹果(一)组装硬件的选择与组装打造黑苹果(二)制作黑mac系统安装U盘打造黑苹果(三)COMS(BIOS)设置前...

4870
来自专栏林德熙的博客

C# 金额转中文大写

创建的项目是创建一个 dot net core 的项目,实际上这个项目可以创建为 Stand 的。

482
来自专栏地方网络工作室的专栏

打造黑苹果(二)制作黑 mac 系统安装U盘

在上一篇打造黑苹果(一)组装硬件的选择与组装 中,我们已经给大家在硬件上有了一个建议。如果你已经购买了硬件了,或者你原来的硬件就已经满足了黑MAC的需求,那么,...

5860
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何快速实现地图定位时的地点微调功能

Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

1215
来自专栏静默虚空的博客

JAVA 设计模式 外观模式

用途 外观模式 (Facade) 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式是一种结构型...

18010
来自专栏跟着阿笨一起玩NET

获取MDI窗体的实例

           //检查指定MDI窗体的实例是否存在。             IsExistInstance(this, typeof(WindowsF...

240
来自专栏石瞳禅的互联网实验室

微信JS-SDK分享功能的.Net实现

为了方便开发者实现微信内的网页(基于微信浏览器访问的网页)功能,比如拍照、选图、语音、位置等手机系统的能力,并方便开发者直接使用微信分享、扫一扫等微信特有的能力...

371
来自专栏领域驱动设计DDD实战进阶

领域驱动设计案例之业务实现2

2646
来自专栏令仔很忙

EasyUI----DataTable转拼EasyUI Tree

在做系统的时候,有一些组织机构类的关系,成树状结构,前台用的是EasyUI,由于涉及到多张表的数据,想要动态的拼接出一个树状的组织结构,后台传过来的是DataT...

692

扫码关注云+社区