线程与委托

线程
线程是程序中独立的指令流。使用 C#编写任何程序时,都有一个入口点:Main()方法。程序从 Main()方 法的第一条语句开始执行,直到这个方法返回为止。 这种程序结构非常适合于其中有一个可识别的任务序列的程序,但程序常常需要同时完成多个 任务。线程对客户端和服务器端应用程序都非常重要。在 Visual Studio编辑器中输入 C#代码 时,系 统会分析代码,用下划线标出遗漏的分号或其他语法错误,这用一个后台线程完成。McrosoftWord 程、任务和同步 ! I 第Ⅲ部分 基 础 的拼写检查器也会做相同的事。一个线程等待用户输入,而另一个线程进行后台搜索。第 3个线程 将写入的数据存储在临时文件中,第 4个线程从htemet上 下载其他数据。 运行在服务器上的应用程序中,等待客户请求的线程,称为侦听器线程。只要接收到请求,就 把它传递给另一个工作线程,之后继续与客户通信。侦听器线程会立即返回,接收下一个客户发送 的下一个请求。 进程包含资源,如 Whdow句柄、文件系统句柄或其他内核对象。每个进程都分配了虚拟内存。 一个进程至少包含一个线程。操作系统会调度线程。线程有一个优先级、实际上正在处理的程序的 位置计数器、一个存储其局部变量的栈。每个线程都有自己的栈,但程序代码的内存和堆由一个进 程的所有线程共享。这使一个进程的所有线程之间的通信非常快=一该进程的所有线程都寻址相同 的虚拟内存。但是,这也使处理比较困难,因为多个线程可以修改同一个内存位置。 进程管理的资源包括虚拟内存和Window句柄,其中至少包含一个线程。线程是运行程序所必需的。
异步委托。创建线程的一种简单方式是定义一个委托,并异步调用它。委托是方法的类型 安全的引用。Delegate类 还支持异步地调用方法。在后台,Delegate类 会创建一个执行任务的线程。
为了说明委托的异步特性,从一个需要一定的时间才能执行完毕的方法开始。TakesWhile()方法至少需要经过第 2个变量传递的毫秒数才能执行完,因为它调用Thread.Sleep()方法:
static int TakesWhlie(int date, int ms)
{
Console.WriteL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中的线程委托是两个重要的概念,它们在多线程编程中起到了重要的作用。 线程是操作系统中独立的执行单元,它可以执行一个或多个方法,并且可以并发地运行。在 C# 中,可以使用 Thread 类来创建和管理线程。Thread 类提供了许多方法和属性,例如 Start 方法用于启动线程,Join 方法用于等待线程执行完成,IsAlive 属性用于判断线程是否处于活动状态等等。 委托是 C# 中的一个重要的概念,它可以用来封装一个或多个方法,并且可以作为参数传递给其他方法。委托可以用来实现事件和回调函数等功能。在 C# 中,使用 delegate 关键字来定义委托类型,例如: ``` public delegate void MyDelegate(int x, int y); ``` 上面的代码定义了一个名为 MyDelegate 的委托类型,它可以接受两个整数参数并且不返回任何值。可以使用委托类型来封装一个方法,例如: ``` public void MyMethod(int x, int y) { Console.WriteLine(x + y); } MyDelegate del = new MyDelegate(MyMethod); ``` 上面的代码将 MyMethod 方法封装到一个名为 del 的委托实例中。可以使用 del.Invoke() 方法来调用委托实例中封装的方法。 在多线程编程中,可以使用委托来实现在线程中执行方法的功能,例如: ``` public void MyThreadMethod(MyDelegate del) { del.Invoke(1, 2); } MyDelegate del = new MyDelegate(MyMethod); Thread thread = new Thread(() => MyThreadMethod(del)); thread.Start(); ``` 上面的代码创建了一个新的线程,并且在线程中执行了 MyThreadMethod 方法。MyThreadMethod 方法接受一个 MyDelegate 委托类型的参数,并且调用了该委托实例中封装的方法。在上面的代码中,将 MyMethod 方法封装到了 del 委托实例中,并且将该委托实例作为参数传递给了 MyThreadMethod 方法。因此,在新的线程中,将会执行 MyMethod 方法,并且输出 3。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值