`

异步执行线程(转)

 
阅读更多

using System; using System.Collections; using System.Threading;

namespace tests { public class AsyncTest { public delegate void mydelegate<T>(T t);

/// <summary> /// 匹配委托,就是确定那个委托指向的函数需要异步 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="AR"></param> public void callbackFunction<T>(IAsyncResult AR) { mydelegate<T> mydelegate = ((mydelegate<T>)AR.AsyncState); mydelegate.EndInvoke(AR); }

/// <summary> /// 第一个业务方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> public void print<T>(T t) { if (t is ICollection) { ICollection It = (ICollection)t; IEnumerator ie = It.GetEnumerator(); while(ie.MoveNext()) { Console.Write (ie.Current+" "); } Console.WriteLine(); } else { Console.WriteLine(false+" "+t.ToString()); } }

/// <summary> /// 第二个业务方法 /// </summary> /// <param name="i"></param> public void add(int i) { Console.WriteLine(i * 2); } /// <summary> /// 执行异步线程方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> public void exeAsync<T>(T t, mydelegate<T> my) { AsyncCallback callback = new AsyncCallback(callbackFunction<T>); ///t 为 线程需要执行的参数; callback 功能 匹配委托,就是确定那个委托指向的函数需要异步 my 作为匹配的依据 my.BeginInvoke( t ,callback , my); } public static void Main() { AsyncTest at = new AsyncTest(); mydelegate<string[]> my1 = new mydelegate<string[]>(at.print<string[]>); mydelegate<int> my2 = new mydelegate<int>(at.add); at.exeAsync<int>(1111,my2); at.exeAsync<string[]>(new string[] { "aa", "b"}, my1); Thread.Sleep(100); } } }

分享到:
评论

相关推荐

    VB异步执行线程的实例源代码

    VB线程异步执行的实例源代码,源码还是半成品,IDE里直接崩,EXE正常,但不清楚其他人的机子怎么样,源码演示的是线程负责显示时间,并检查文本框输入,找到“zzz”字符就退出线程。这是一个还在讨论中的源代码,VB...

    C# 多线程异步执行

    在编程领域,多线程和异步执行是提高应用程序性能和响应能力的关键技术。尤其是在C#这样的高级语言中,这两个特性被广泛应用于处理耗时任务,如网络I/O操作,如下载图片。本文将深入探讨如何使用C#的多线程和异步...

    delphiXE多线程同步对象及异步执行.zip

    异步执行是在多线程中常用来避免阻塞主线程的方法。在Delphi中,可以使用Synchronize方法在非UI线程中更新UI组件。Synchronize会将传递给它的方法放到主线程的消息队列中,等待主线程处理,从而确保UI操作的线程安全...

    C#编写的异步多线程服务器的类

    本资源包聚焦于"C#编写的异步多线程服务器的类",这是一门高级技术,用于构建高性能、高并发的网络服务。在现代应用中,尤其是在处理大量并发连接时,异步多线程技术显得尤为重要。 异步编程是C#的一项关键特性,它...

    C#Winform异步多线程和线程池集成的用法

    这里的`await`关键字使`Button_Click`方法变为异步,允许UI线程在`BackgroundTask`执行期间继续处理事件。 三、线程池 线程池是一种系统资源管理机制,用于高效地重用和管理线程。相比于直接创建新线程,使用线程池...

    异步多线程Demo

    这个“异步多线程Demo”很可能是为了帮助学习者理解并实践多线程编程而提供的一个实例。 1. **线程定义**:线程是程序执行的最小单元,每个线程都有自己的程序计数器、系统栈和局部变量。在单个进程中,可以有多个...

    Excel文件的导入(异步线程)

    使用异步线程,我们可以将文件读取和处理任务放到后台执行,主线程可以继续处理其他用户交互,提高系统的响应速度。 以Python为例,可以使用`asyncio`库配合`aiofiles`库实现异步读取Excel文件: ```python import...

    关于异步线程的例子

    异步线程是计算机编程中的一个关键概念,特别是在多任务处理和提高系统性能方面。它允许程序在执行长时间运行操作时不会阻塞主线程,从而提高用户体验。在.NET框架中,`BackgroundWorker` 和 `Thread` 是两种常用的...

    线程异步工作,当一个线程结束时异步通知另一线程

    线程异步工作是指线程之间不直接依赖彼此的执行顺序,它们可以独立地执行任务,并通过某种机制交换信息。这种方式能够充分利用多核处理器的计算能力,提高程序的并行性和响应速度。在C++中,可以使用`std::async`、`...

    同步异步多线程SOCKET通讯

    本主题将深入探讨同步异步多线程Socket通信,这涉及到如何在多个线程中处理I/O操作,以及同步与异步模型的选择对性能和程序设计的影响。 **同步与异步** 同步和异步是两种处理I/O操作的不同方式。在同步模式下,...

    c#Winform异步线程刷新UI

    本文将详细探讨如何在WinForm应用中使用异步线程来刷新UI,并实时反馈任务进度。 首先,让我们了解什么是异步编程。异步编程允许我们在不阻塞主线程的情况下执行长时间运行的任务。在UI应用程序中,主线程负责处理...

    vc 异步多线程socket 包括服务端和客户端

    在VC++编程环境中,异步多线程Socket通信是一个关键的技术点,它涉及到网络编程、并发处理以及事件驱动模型等多个方面。在这个项目中,我们有服务端和客户端两部分,两者都利用了异步和多线程技术来提高通信效率和...

    同步执行和异步执行学习Demo

    同步执行和异步执行是理解并发编程和多线程编程的关键概念。 **同步执行** 是一种线性、顺序的执行模式。在同步执行中,程序会按照代码的顺序逐行执行,如果某一步骤需要等待,例如读取文件、网络请求或计算密集型...

    Spring 异步多线程动态任务处理的使用心得

    Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被调用时,它不会在当前线程中执行,而是由Spring的TaskExecutor负责调度到一个新的线程中运行。这使得主线程能够继续执行其他任务,而不...

    Java多线程实现异步调用实例

    在Java编程中,多线程和异步调用是提高应用程序性能和响应能力的重要手段。在本实例中,我们将深入探讨如何使用Java实现多线程以实现异步调用,并理解其背后的机制。 首先,多线程允许一个程序同时执行多个任务。在...

    多线程异步调用(并参递参数)

    在编程领域,多线程和异步调用是提高程序性能和响应能力的重要技术。尤其在处理耗时操作,如网络请求、大数据计算或者I/O密集型任务时,多线程和异步调用能够充分利用现代多核处理器的资源,避免程序阻塞,提升用户...

    log4j2异步多线程打印

    在`asnc-print-different-logfile`这个压缩包中,可能包含了一个示例项目,用于演示如何配置和使用Log4j2实现异步多线程打印。项目可能包含以下元素: 1. `pom.xml`:Maven项目的配置文件,定义了依赖项和构建指令...

    boost asio异步多线程接收demo

    本示例"boost asio异步多线程接收demo"主要探讨了如何利用Boost.Asio库实现异步多线程的网络通信,每个连接使用独立的线程和IO服务(`io_service`),以确保线程间的并行性和无干扰。 首先,我们需要理解`io_...

    Android异步线程使用Demo

    在Android应用开发中,由于主线程负责用户界面的更新,执行耗时操作(如网络请求、数据库操作等)会阻塞UI,导致应用无响应,因此需要使用异步线程来处理这些任务。本示例"Android异步线程使用Demo"主要探讨的是...

    异步多线程+socket即时通讯Demo

    在IT行业中,异步多线程和Socket编程是构建高性能、实时性要求高的网络应用程序的重要技术。本项目“异步多线程+socket即时通讯Demo”显然是一个使用C#语言和WinForm界面开发的实时通信工具,它利用了.NET Framework...

Global site tag (gtag.js) - Google Analytics