异步编程中使用帮助类来实现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 条评论
登录 后参与评论

相关文章

来自专栏大内老A

我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯

在一个基于面向服务的分布式环境中,借助一个标准的、平台无关的Communication Infrastructure,各个Service通过SOAP Messa...

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

如何实现伪双击事件

第一种方式:可以参考http://blog.csdn.net/zbssoft/article/details/5602658

321
来自专栏技术之路

Caliburn.Micro学习笔记(五)----协同IResult

今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute...

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

c# 使用timer定时器操作,上次定时到了以后,下次还未执行完怎么处理

------解决方案-------------------------------------------------------- 开始的时候,禁用定时器,你...

1661
来自专栏张善友的专栏

基于OWin的Web服务器Katana发布版本3

当 ASP.NET 首次在 2002 年发布时,时代有所不同。 那时,Internet 仍处于起步阶段,大约有 5.69 亿用户,每个用户平均每天访问 Inte...

1915
来自专栏木宛城主

Thinking In Design Pattern——MVP模式演绎

目录 What Is MVP Domain Model StubRepositoty IView & Presenter View Ioc容器Structure...

20910
来自专栏Linux驱动

10.QT-定时器

1222
来自专栏大内老A

我的WCF之旅(2):Endpoint Overview

WCF实际上是构建了一个框架,这个框架实现了在互联系统中各个Application之间如何通信。使得Developers和Architect在构建分布式系统中,...

1817
来自专栏Create Sun

quartz.net插件类库封装(含源码)

1、前言    最近项目需要做一写任务作业调度的工作,最终选择了quartz.net这个插件,它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而 ...

26611
来自专栏GreenLeaves

WCF系列教程之WCF客户端异常处理

本文参考自:http://www.cnblogs.com/wangweimutou/p/4414393.html,纯属读书笔记,加深记忆 一、简介 当我们打开W...

1856

扫码关注云+社区