手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

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

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  图2. 在使用.NET Framewok中用到的跟踪工具
  类是System.Diagnostics名称空间的一部分。Trace类提供了几个共享的方法。例如,Write方法允许你记录特定消息,而Assert方法允许你在特定的条件为假的情况下记录一条消息。Trace类将消息输出到Listeners集合中的对象。这个集合中的每个对象都属于继承自TraceListener的一个类。EventLogTraceListener 将消息写入事件记录,而TextWriterTraceListener则是将消息写入到一个文本文件中,默认情况下,DefaultTraceListener的一个实例被添加到Trace类的Listeners集合中。

  除了标准的监听程序以外,你可以实施自己跟踪监听程序。例如,你希望接收来自在防火墙后面的远程机器上运行的应用程序的跟踪输出。你可以编写一个跟踪监听程序,通过HTTP全球向你的服务器发送跟踪消息。这将会影响你的应用程序的性能,但只会在启用跟踪时才会对性能有所影响。

  代表性地,你需要有能力在编译的二进制文件中包括或去除跟踪代码。为了在Visual Basic 6.0中做到这一点,你需要使用编译常量,并在#If语句中包含所有的跟踪代码,这使得代码很难理解和维护。利用.NET Framework,你只需在项目属性(Project Properties)对话框中将TRACE编译常量设为on或off状态;你无需在#If语句中包括跟踪代码。

  另一个普遍期望的跟踪特性是跟踪水平设置,这包括不同的跟踪设置-例如, Severe(严重)、Error(错误)、Warning(警告)和Information(信息)-这些设置对记录哪些信息进行控制。你可以使用跟踪组件启动时所读取的注册表数值对此进行控制。对于.NET Framework,这是完全内置的功能。你可以设置一个注册表数值来控制你当前的应用程序的记录水平,比如,只有在跟踪水平被设置为Severe(严重)的情况下,才使用Trace.WriteIf和Trace.WriteLineIf来记录消息。

  集成的跟踪和记录特性极大地增强了生产力,因为你只需使用内置的特性,将精力集中在编写真正的应用程序代码上。

  多线程应用程序

  .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方法对工作进行排队。以前要这样做,你必须得创建和管理自己的线程池。你又需要在基础设施工作而不是在解决商务问题上花大量的时间和精力。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

上一页 1 23 4 下一页
[打印] [关闭]
Google
相关文章
上一篇:用Visual Basic.Net创建多线程应用程序
下一篇:面向服务器的快速应用程序开发(RAD)
热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS