科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件与Visual Basic .NET一起使用.NET Framework

与Visual Basic .NET一起使用.NET Framework

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

使用.NET Framework,Microsoft Visual Basic开发人员可以创建健壮的、在先前的Visual Basic版本中很难编写的应用程序。

作者:佚名 来源:microsoft 2007年11月10日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
多线程应用程序

  .NET Framework的一个很重要的特性是,可以在不使用第三方工具或不支持的Visual Basic技巧情况下,使用Visual Basic创建多线程应用程序。.NET Framework的多线程支持是由System.Threading名称空间中的类和接口提供的,因此所有的.NET语言都能够以相同的方式创建和处理线程。System.Threading.Thread是一个核心类,提供了对创建和控制线程的支持。要创建一个线程,你可以创建一个新的System.Threading.Thread对象,将构造函数传递给ThreadStart代理。这个代理提供了这个线程开始执行的方法。当你准备启动这个新的线程时,可以调用Thread.Start() (请参阅清单1)。

  当你开始创建多线程应用程序时,你很快就会认识到需要控制对共享资源的访问,如共享的类变量。.NET Framework还包括几个类和数据类型,你可以使用它们对两个线程执行的动作进行同步。

  在最简单的情况中,你由一个需要从不同的线程中进行更新的共享变量。要这样做,你可以使用System.Threading.Interlocked类。例如,你可以通过编写Interlocked.Increment(num)或Interlocked.Decrement(num)分别使名为num的共享变量递增或递减。你还可以使用Interlocked将变量设为某一特定值,或检查两个变量是否相等。除了这种简单情况以外,你可以使用.NET Framework类来执行更复杂的线程同步,如事件和互斥体的同步-所有都来自于.NET Framework内部,而无须使用Win32 API。.

Imports System.IO
'The namespace System.Threading
'contains the Thread class
Imports System.Threading
Module Module1
Private count As Long
Sub Main()
'Create the ThreadStart delegate
Dim tStart As ThreadStart = New _
ThreadStart(AddressOf StartCounting)
'Create the thread
Dim t1 As Thread = New Thread(tStart)
Console.WriteLine("Enter q to quit")
t1.Start() 'start the thread
While (Console.Read() <> asc("q"))
'repeat the loop until the user enters q
End While
t1.Stop() 'tell thread to stop processing
t1.Join() 'wait until the thread finishes
End Sub
Sub StartCounting()
Do
'use Interlocked.Increment in case
'another thread is accessing the same variable
Interlocked.Increment(count)
Console.WriteLine( _
"After incrementing count is : {0}", count)
Thread.Sleep(200)
Loop
End Sub
End Module

    清单1. 使用Visual Basic .NET创建线程

  你创建了一个新线程,将它传递给一个ThreadStart代理。然后调用Thread.Start()启动这个线程。你可以通过调用Thread.Stop()来中止这个线程,然后调用Thread.Join()等待它完成关闭操作。一个线程可以使用System.Threading.Interlocked来使变量递增或递减。

  此外,.NET Framework提供了一个方便的机制来对工作排队,并将起分配给线程池中的某个线程。在处理多个并发工作项目或工作请求的服务器应用程序中,这非常有用。例如,对于等待输入文件,然后将它们导入到数据库中去的应用程序,可能会对每个输入文件进行排队,以在线程池中的某个单独的线程上进行处理。System.Threading.ThreadPool类允许你使用共享的QueueUserWorkItem方法对工作进行排队。以前要这样做,你必须得创建和管理自己的线程池。你又需要在基础设施工作而不是在解决商务问题上花大量的时间和精力。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章