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线程异步执行的实例源代码,源码还是半成品,IDE里直接崩,EXE正常,但不清楚其他人的机子怎么样,源码演示的是线程负责显示时间,并检查文本框输入,找到“zzz”字符就退出线程。这是一个还在讨论中的源代码,VB...
在编程领域,多线程和异步执行是提高应用程序性能和响应能力的关键技术。尤其是在C#这样的高级语言中,这两个特性被广泛应用于处理耗时任务,如网络I/O操作,如下载图片。本文将深入探讨如何使用C#的多线程和异步...
异步执行是在多线程中常用来避免阻塞主线程的方法。在Delphi中,可以使用Synchronize方法在非UI线程中更新UI组件。Synchronize会将传递给它的方法放到主线程的消息队列中,等待主线程处理,从而确保UI操作的线程安全...
本资源包聚焦于"C#编写的异步多线程服务器的类",这是一门高级技术,用于构建高性能、高并发的网络服务。在现代应用中,尤其是在处理大量并发连接时,异步多线程技术显得尤为重要。 异步编程是C#的一项关键特性,它...
这里的`await`关键字使`Button_Click`方法变为异步,允许UI线程在`BackgroundTask`执行期间继续处理事件。 三、线程池 线程池是一种系统资源管理机制,用于高效地重用和管理线程。相比于直接创建新线程,使用线程池...
这个“异步多线程Demo”很可能是为了帮助学习者理解并实践多线程编程而提供的一个实例。 1. **线程定义**:线程是程序执行的最小单元,每个线程都有自己的程序计数器、系统栈和局部变量。在单个进程中,可以有多个...
使用异步线程,我们可以将文件读取和处理任务放到后台执行,主线程可以继续处理其他用户交互,提高系统的响应速度。 以Python为例,可以使用`asyncio`库配合`aiofiles`库实现异步读取Excel文件: ```python import...
异步线程是计算机编程中的一个关键概念,特别是在多任务处理和提高系统性能方面。它允许程序在执行长时间运行操作时不会阻塞主线程,从而提高用户体验。在.NET框架中,`BackgroundWorker` 和 `Thread` 是两种常用的...
线程异步工作是指线程之间不直接依赖彼此的执行顺序,它们可以独立地执行任务,并通过某种机制交换信息。这种方式能够充分利用多核处理器的计算能力,提高程序的并行性和响应速度。在C++中,可以使用`std::async`、`...
本主题将深入探讨同步异步多线程Socket通信,这涉及到如何在多个线程中处理I/O操作,以及同步与异步模型的选择对性能和程序设计的影响。 **同步与异步** 同步和异步是两种处理I/O操作的不同方式。在同步模式下,...
本文将详细探讨如何在WinForm应用中使用异步线程来刷新UI,并实时反馈任务进度。 首先,让我们了解什么是异步编程。异步编程允许我们在不阻塞主线程的情况下执行长时间运行的任务。在UI应用程序中,主线程负责处理...
在VC++编程环境中,异步多线程Socket通信是一个关键的技术点,它涉及到网络编程、并发处理以及事件驱动模型等多个方面。在这个项目中,我们有服务端和客户端两部分,两者都利用了异步和多线程技术来提高通信效率和...
同步执行和异步执行是理解并发编程和多线程编程的关键概念。 **同步执行** 是一种线性、顺序的执行模式。在同步执行中,程序会按照代码的顺序逐行执行,如果某一步骤需要等待,例如读取文件、网络请求或计算密集型...
Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被调用时,它不会在当前线程中执行,而是由Spring的TaskExecutor负责调度到一个新的线程中运行。这使得主线程能够继续执行其他任务,而不...
在Java编程中,多线程和异步调用是提高应用程序性能和响应能力的重要手段。在本实例中,我们将深入探讨如何使用Java实现多线程以实现异步调用,并理解其背后的机制。 首先,多线程允许一个程序同时执行多个任务。在...
在编程领域,多线程和异步调用是提高程序性能和响应能力的重要技术。尤其在处理耗时操作,如网络请求、大数据计算或者I/O密集型任务时,多线程和异步调用能够充分利用现代多核处理器的资源,避免程序阻塞,提升用户...
在`asnc-print-different-logfile`这个压缩包中,可能包含了一个示例项目,用于演示如何配置和使用Log4j2实现异步多线程打印。项目可能包含以下元素: 1. `pom.xml`:Maven项目的配置文件,定义了依赖项和构建指令...
本示例"boost asio异步多线程接收demo"主要探讨了如何利用Boost.Asio库实现异步多线程的网络通信,每个连接使用独立的线程和IO服务(`io_service`),以确保线程间的并行性和无干扰。 首先,我们需要理解`io_...
在Android应用开发中,由于主线程负责用户界面的更新,执行耗时操作(如网络请求、数据库操作等)会阻塞UI,导致应用无响应,因此需要使用异步线程来处理这些任务。本示例"Android异步线程使用Demo"主要探讨的是...
在IT行业中,异步多线程和Socket编程是构建高性能、实时性要求高的网络应用程序的重要技术。本项目“异步多线程+socket即时通讯Demo”显然是一个使用C#语言和WinForm界面开发的实时通信工具,它利用了.NET Framework...