vb.net互斥量 互斥微操作

如何使用VB.NET中可选参数调用方法VB.NET可选参数的默认值必须是一个常数表达式 。
过程定义中跟在可选参数后的每个参数也都必须是可选的 。
下面的语法显示带VB.NET可选参数的过程声明:
Sub sub name(ByVal parameter 1 As data type 1,
Optional ByVal parameter 2 As data type 2 = default value)
调用带VB.NET可选参数的过程
过程在运行时无法检测到给定的参数是否已被省略,或者调用代码是否已显式提供默认值 。如果需要弄清楚这一点,可以设置一个不可能的值作为默认值 。下面的过程定义了可选参数 office,并测试其默认值 QJZ 以查看它在调用中是否已被省略:
Visual Basic
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters" End If
' Insert code to notify headquarters or specified office.
End Sub
如果可选参数是像 String 这样的引用类型,只要它不是该变量所预期的值,就可以使用 Nothing 作为默认值 。
VB.NET可选参数和重载
定义带可选参数的过程的另一种方法是使用重载 。如果有一个可选参数,可以定义过程的两个重载版本,一个接受此参数 , 另一个则不带参数 。此方法随可选参数数目的增加而变得更复杂 。然而 , 这样做的优点是可以完全确定调用程序是否提供了每个VB.NET可选参数 。
VB.net 和C#.net 各有什么优缺点C#.net优点:
运算符重载 。不安全代码(指针和固定内存区)、 无符号整数、移位运算 。
VB的优点:
即时编译、静态事件绑定、条件异常捕获、COM兼容类、宽松的类型检查和变量声明、VisualBasicRuntime库、可选参数、带参数属性、模块等语言特征、动态数组 。
通过VB.NET开发好的程序绝对没有问题(包括DirectX游戏开发) 。虽然VB.NET的资料少,但是只要C#支持的VB.NET都支持(大体上这样,因为都要经过MSIL中间环节 。除了指针之类的VB.NET不支持C#支持,但是没有多大实际用处) 。
vb.net的资料以英文资料居多(只有英文资料才有看头 , 中国的没有什么好资料) , 得看看英文水平过不过关 。还有VB.NET的ide也比C#的IDE好得多,代码看得也舒服 。(C#的大括号{}太烦人) 。
至于VB6对C的帮助,只是理解上会容易一些,其它用处不大 。有VB6的基础学VBNET会方便一些,但是并不是会VB6就会VB.NET,它们差别也不小 。
扩展资料:
NET、C#和ASP.NET之间的区别:
1、NET是一个平台,一个抽象的平台的概念 。
NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台 。
基本可以理解的NET核心就是NETFramwork 。
NETFramework包括两个关键组成元素:
a.CommonLanguageRuntime,公共语言运行时(CLR0)-提供内在管理 , 代码安全性检测等功能 。
b.NETFrameworkClassLibrary,.NET框架类库(FLC)-提供大量应用类库 , 提高开发效率 。
学习NETFramework是所有.NET开发人员都必须的,否则开发NET程序永远都是停留在‘外功’的招式 , NETramework是NET开发高手的‘内功’修行之一 。
【vb.net互斥量 互斥微操作】2、C#是一个程序设计语言,仅仅是一个语言 。
程序设计语言仅仅是为了方便开发人员和计算机沟通的工具,虽然C#语法相对C和 C 要多一些,但是相对来看C#语法都比较固定,这样使用起来却都很容易 。我认可一位朋友说的,C#的语法更严谨!
这里回过来看看NET和C#的关系,不得不提的是NET程序的执行过程 。
C#符合NETCLR中的公共语言运行规范 。CLS:commonlanguagespecification , 当然所有的NETLanguage都是符合这个规范的例如:VB.NET、XAML和C/CL等等 。
C#需要符合NETCLS,是因为NETCLR和JAVA虚拟机类似,有一个中间语言共机器来执行 。所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL),所以所有NET支持语言都必须符合符合CLS规范 。
P.S:如果做.NET3.0XAML开发的朋友,可以尝试下ildasm.exe看看XAML的应用程序,会发现原来XAML其实很简单 。
3、ASP.NET是一个网站开发的技术,仅仅是.NET框架中的一个应用模型 。
用微软公司ASP.NET快速入门中的一句话来解释 , ASP.NET是用于生成基于Web的应用程序的内容丰富的编程框架 。
ASP.net和C#的区别:
编写asp.net通常包括两部分的代码:网页层和后台处理层 , 网页就是用标记语言来写的,而网页对应的后台处理程序则需要.net语言来完成,目前主要是采用c#和vb.net 。
可以说整个的asp.net网站通过c#或者vb.net来实现 。而c#则是ms.netframework的主要语言,可以用在网站 , 桌面应用等方面 。可以算是一种比较流行的编程语言 。
vb.net的安装怎么去安装?选择什么步骤一:打开需要制作安装程序的VB.Net项目
点击菜单【文件—新建项目】出现如图01的对话框单击【其他项目类型—安装和部署】选择【安装项目】如图:
步骤二:
双击【My Project】(在“解决方案资源管理器”里面呢),如图所示 。
步骤三3:单击【引用】选项卡 , 查看解决方案的引用项,关注一下.Net类型的引用,本解决方案引用.Net类型的版本是2.0版 。查看这个信息直接关系到最终安装文件的大小 。
右键单击“解决方案资源管理器”中【Setup1】,选择【添加—项目输出】,选择“主输出”后单击【确定】 。
再次右键点击【Setup1】,选择【属性】,跳出对话框 。
步骤四:这里的设置可是关键中的关键
步骤五:“选择要安装的系统必备组件”,解决的是运行可执行文件环境的问题运行使用VB.Net编写的程序 , 必须在系统中安装.Net Framework(也有软件使用虚拟环境运行的) 。“查看引用”查到的信息就用到了 。如果解决方案只是引用了2.0版本的框架(.Net Framework),默认的系统组件选择 。
可以选择框架3.5,建议使用框架2.0,因为框架2.0大小是30M,而框架3.5却有300M之巨.指定系统必备组件的安装设置”这个选项也挺有用 。如果编写了一个很简单的程序 , 想发布(此发布不是前述的发布)出去让大家使用,而又不想拖着少则几十兆多则几百兆的框架的话,那么可以选择第一个互斥按钮 。如果担心用户在安装程序时上网不方便,不能从供应 商那儿下载框架的话,那么 , 只好把框架拖上喽(这也是为什么在能选择框架2.0的时候莫要选择框架3.5的原因,安装程序越小越好,用户如果安装了几百 兆的程序,发现打开的只是个简单的计算器的话,会气的摔键盘的?。?
新手关于VB.net的问题您好vb.net互斥量 , 在Visual Basic.NET中vb.net互斥量,是没有像这样的文件I/O操作的,一般都是通过System.IO.StreamReader和System.IO.StreamWriter类 , System.IO.BinaryReader和System.IO.BinaryWriter类来读写文件以及利用My.Computer.FileSystem类读写文件,利用System.IO.Filestream类来创建文件,通过引用Microsoft Scripting Runtime来执行文件(夹)和驱动器的特殊操作,常用的是System.IO.StreamReader和System.IO.StreamWriter类 。
例如说要读取一个文件,我们可以利用System.IO.StreamReader类编写一个方法(也就是函数),但是首先要在当前类的开头添加一个引用 , 引用名称:System.IO,添加引用的代码如下
Imports System.IO
添加引用之后 , 就在当前类的内部创建方法:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
ReadFile = sr.ReadToEnd()
sr.Close()
sr = Nothing
End Function
示例说明:
该方法是一个返回String(字符串)数据的函数,FileURL作为参数是用来存放需要访问的文件的URL,当然 , 要获取一个文件的URL,就是利用这一句代码实现的:
Dim sr As StreamReader = New StreamReader(FileURL)
当获取了URL之后,就要对文件进行读取操作了,然后将读取的结果返回给方法:
ReadFile = sr.ReadToEnd()
读取文件完毕之后,要对文件执行关闭操作:
sr.Close()
当然别忘了清理资源:
sr = Nothing
StreamReader类可以从流或文件中读取字符,在创建StreamREader类的对象时 , 可以指定一个流对象,也可以指定一个文件URL,创建对象后就可以调用他的方法,从流中读取数据,其常用方法如下:
Peek:返回下一个可用字符,但不使用它 。
Read:读取输入流中下一个字符或一组字符并移动流或文件指针 。
ReadBlock:从当前流中读取最大数量字符并从index开始将数据写入buffer 。
ReadLine:从当前流中读取一行字符并将字符作为String返回 。
REadToEnd:从流的当前位置到末尾读取流 。
Close:关闭打开的对象,释放资源 。
注:流 , 一种新的数据格式,这种格式可通过System.IO命名空间下的类访问 。流用Stream类表示 , 所有的流都是从这个类中继承的 。流向用户提供了一个一般的数据视图,隐藏了操作系统和底层设备的实现细节,所有的流都支持读写操作 。在打开文件时将返回对应的流对象,用户可以对流对象进行读写操作 。
如果要对文件执行按行读取操作,这时就会用到枚举,这时候 , 代码就要更改一下了:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
For Each fLine As String In sr.ReadToEnd()
Line = sr.ReadLine()
ReadFile = ReadFilefLine
Next sr.ReadLine
sr.Close()
End Function
示例说明:
For Each…Next:派生于For…Next循环,用于枚举一系列对象中的成员,而这些对象组成集合,如果集合中至少存在一个元素,程序就会静茹For Each块执行 。其格式如下:
For Each 元素 [As 数据类型] In 元素集合
[循环体]
[Exit For]
[循环体]
Next [元素]
比如:
Dim CountNumber As ULong = 0
Dim FolderName() As String = New String() {" "}
For Each strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")
CountNumber = CountNumber1
ReDim Preserve FolderName(1 To CountNumber)
FolderName = strFolder
Next strFolder
注:My.Computer.FileSystem.GetDirectories:主要用来枚举指定目录的子文件夹 。
Preserve:主要用来避免重定义数组而不损失数组元素的原有数据 。
另外,利用My.Computer.FileSystem也可以实现文件的读取 , 其代码如下:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")
示例说明:
定义一个字符串变量利用My.Computer.FileSystem.ReadAllText来实现对“C:\test.txt”的读取 。
如果是已经编码的文本,则可以使用My.Computer.FileSystem对象中的ReadAllText方法并提供路径和文件编码类型,将文本写入字符串变量中,例如:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt", _
System.Text.Encoding.UTF32)
当然,System.Text.Encoding的成员不止一个,它还有如下成员:
System.Text.Encoding.UTF8
System.Text.Encoding.UTF16
System.Text.Encoding.ASCII
System.Text.Encoding.Unicode
这些是常见的成员 , 也是主要的成员 。
另外,利用My.Computer.Filesystem类无法实现文件的行操作,还有 , 如果您的计算机未安装完整的Microsoft.NET Framework Runtime,则无法实现这种操作!
写入文件的操作同样简单,Visual Basic.NET 允许用户使用StreamWriter来对文件写入内容,下面就让我们来创建一个子例程,来实现文件的写入:
Private Sub WriterFile(ByVal FileURL As String, ByVal FileCon As String)
Dim sr As StreamWriter = New StreamWriter(FileURL)
sr.Write(FileCon)
sr.Close()
sr = Nothing
End Sub
示例说明:
sr.Write(FileCon):将FileCon写入文件FileURL之中 。
另外,StreamWriter常用方法如下:
WriteLine:向流中写入一行,后面跟结束符 。
Write:写入流,向流对象中写入字符并移动流或文件指针 。
Close:关闭打开的对象,释放资源 。
附:Visual Basic 6.0文件操作解说:
打开: Open 文件名 For Input | Output | Append As [#]文件号
Input打开读入,文件不存在报错 。Output打开覆盖写入,文件不存在则创建 。Append打 开追加写入 , 文件不存在则创建 。
读: Line Input #文件号, 字符串变量
读一行数据存入字符串变量,数据包括空格、Tab、等 , 不包括回车符和换行符,所以要显示文件的换行效果,要手动添加回车符和换行符(vbCrLf)
Input #文件号, 变量1[, | ;] [变量2]...
这种方式可以存入多个变量,而且变量类型不限于字符串型 。
写: Print #文件号, 参数1[, | ;] [参数2]...
将各参数逐个写入文件 。参数间用逗号隔开时,文件中相应插入多个空格vb.net互斥量;用分号隔开时,插入一个空格 。可以用Spc(n)、Tab(n)等进行排版 。
Write #文件号, 参数1[, | ;] [参数2]...
这种写入方式将自动添加界定符 , 对不同参数的类型加以界定 。
Visual Basic 6.0文件操作函数:
Seek: Seek(文件号)
返回文件正在访问的位置,返回值为长整型 。对顺序文件和二进制文件 , 返回值以字节为单位;对随机访问文件,返回值以记录号为单位 。
Seek: Seek [#]文件号,位置
定位文件到指定位置 。位置单位同上所述 。
Input: Input (字节数,[#]文件号)
从文件的访问当前位置读入指定字节数的数据 。仅适用于顺序文件和二进制文件 。
EOF: EOF(文件号)
判断文件的访问位置是否在文件尾,如果是 , 返回True,否则 , 返回False 。
LOF: LOF(文件号)
返回文件长度,单位为字节 。
FileLen: FileLen (文件名)
返回文件名对应文件的长度,单位是字节 。该函数取磁盘文件标识中的长度,即文件打开前的长度,可以取未打开的文件长度 。
GetAttr: GetAttr (Pathname)
返回指定文件或文件夹的属性 。
FileAttr: FileAttr (文件号)
返回文件号对应文件的打开方式 。
GetDateTime: GetDateTime (Pathname)
返回文件被创建或修改的最后日期和时间 。
Free: FreeFile[(0|1)]
返回未被占用的文件号,Free或Free(0)返回1~255之间未占用的文件号,Free(1)返回256~511之间未占用的文件 。
Dir: Dir (Pathname [,Attributes])
测试指定路径是否有某文件,Attributes附加文件属性条件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory 。
Kill: Kill (文件名)
删除指定文件,文件名可包含路径 。
FileCopy: FileCopy 源文件 , 目标文件
拷贝文件 。
Name: Name 旧文件名 As 新文件名
文件重命名 。前后路径不一致时,操作为移动文件并重命名 。
MkDir: MkDir path
新建文件夹 。
RmDir: Rmdir path
删除文件夹 。
ChDrive: ChDrive Drive
改变当前驱动器 ChDrive "D"
CurDir: CurDir [(driver)]
返回当前工作路径 , 指定driver则返回目标驱动器的当前工作路径 。
举例:
'新建文件,并写入数据,关闭
Open "a.txt" For Output As #1
Print #1, "ABCDEFG"; vbCrLf; "HIJK"
Close #1
'打开文件 , 并全部写入新文件,关闭
Open "a.txt" For Input As #2
Open "b.txt" For Output As #3
Dim str As String
While (Not EOF(2))
Line Input #2, str
Print #3, str
Wend
Close
注:关于Visual Basic 6.0的文件操作资料来自于
如果您觉得我的回答帮助了您解决难题,别忘了采纳哦,如果我的回答未能解决您的问题,您可以在互联网上寻找更多的解决方案!
vb和vb.net的区别和特点1、vb.net完全符合面向对象vb.net互斥量的编程语言抽象、封装、继承vb.net互斥量的四大特性vb.net互斥量,而vb不支持继承 。
2、错误处理不同 。
vb中只是On Error.....goto和On Errer Resume Next vb.net互斥量,这些错误称为非结构化异常处理 。而在vb.net中采用的结构化异常处理机制,try...catch....finally控制 。
3、两者产生的窗体不同 。
vb.net 允许创建不同类型的应用程序,例如 , 创建ASP.NET和ASP.NET Web 服务应用程序 , 还允许创建控制台应用程序和作为桌面服务运行的应用程序 。但是vb 只能创建Windows窗体 。
4、数据库访问的差别 。
vb6.0是通过ADO(Active X Data Objext)来实现对数据库访问 。而vb.net 是通过ADO.NET来访问数据库 。
扩展资料
Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言 , 为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言 。是一种可用于微软自家产品开发的语言 。
“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可 。
“Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,是一种在计算技术发展历史上应用得最为广泛的语言 。
Visual Basic源自于BASIC编程语言 。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序。
参考资料vb.net互斥量:百度百科-Visual Basic
与VB .NET一起使用.NET Framework 使用 NET Framework Microsoft Visual Basic开发人员可以创建健壮的 在先前的Visual Basic版本中很难编写的应用程序 本文将讨论使用 NET Framework的好处 并且将包括一些功能强大的 Visual Basic开发人员可以与该框架一起使用的特性 包括多线程和线程池(thread pooling) Windows服务和文件系统监控等为什么使用框架单词框架(framework)有几种含意 在这种情况中 它指的是创建和运行应用程序的基础 拥有这样的基础使得创建应用程序变得更容易 而同时使用了一个一致的 简化的程序设计模型 作为一个Visual Basic 开发人员 你对于这种程序设计语言感觉很满意 它使得创建各种应用程序变得很容易 Visual Basic语言本身提供了固有的数据类型 如 Integer Long和String 以及一些最常用的函数 如字符串处理和数据类型转换等 当你的应用程序变得更复杂时 你可以使用Win API来完成标准的Visual Basic函数所不能实现的功能 如获取任意的注册键和数值 在许多情况中 你还可以使用(Component Object Model 组件对象模型)组件库来扩展应用程序的功能 最明显的例子是ADO(ActiveX Data Objects)库 你的应用程序可以使用它来进行数据访问 虽然Visual Basic足够灵活 可以提供这些不同的可扩展性机制 但这种灵活性仍然需要你学习几种复杂的API体系结构 你需要了解Win 如何工作 以及如何在Visual Basic中调用它们 这可能会是一个既费时又容易出错的任务 你还需要了解如何在Visual Basic中使用各种组件 每个组件都有一个不同的对象模型 最后 当你使用Win API ADO 也可能使用许多其他组件 创建自己的Visual Basic应用程序时 你需要管理这些应用程序的部署以及它们的相关性 一个典型的Visual Basic应用程序的相关性列表所包括的远远多于Visual Basic运行时(runtime);它必须包括应用程序使用的所有对象库 如ADO 公共框架背后的想法是解决这些问题 并使得用户创建健壮的应用程序变得更容易 而无需学习多种不同的API体系结构 并且无需部署和处理多种对象库的版本问题什么是 NET Framework术语 NET Framework指的是构成Microsoft NET平台开发基础的一组技术 这一组中的关键技术是运行时(runtime)和类库 运行时负责管理代码 在执行时向它提供服务 这与Visual Basic 运行时的作用类似 NET程序设计语言 包括Visual Basic NET Microsoft Visual C# C管理的扩展 以及多种来自不同开发商的程序设计语言 通过一组公共的统一类来利用各种服务和特性NET统一类提供了创建应用程序的基础 而不管你使用何种语言 无论你只是简单地连接一个字符串 还是创建一个Windows服务或多层的基于网络的应用程序 你都要用到这些统一类 统一类为访问平台的功能性提供了一种一致的方法 一旦你学会了使用类库 你就会发现所有任务都遵循同一个一致的体系结构 要编写自己的应用程序 你无需学习和掌握不同的API体系结构 由于 NET Framework 部署Visual Basic NET应用程序变得更容易了 与Visual Basic 应用程序不同 你无需配置各种相关性 如单独的数据访问库 XML语法分析器和网络API 因为所有这些功能都是 NET Framework的组成部分 通过在统一的 集成的框架上创建自己的应用程序 你可以实现学习这种框架所花费时间的最大回报 并且你将拥有更多容易部署和使用的健壮的应用程序NET Framework与Visual Basic NETVisual Basic 运行时在简化许多公共的程序设计任务方面非常重要 但是简化这一层意味着 在拥有Visual Basic可以使用的打包程序之前 你不能使用新的操作系统特性 如DirectX 作为一个Visual Basic开发人员 你从 NET Framework获得的最重要的益处是 可以使用一致的程序设计模型既直接又容易地访问 NET平台 这意味着 你可以使用Visual Basic NET创建很难或不可能使用Visual Basic 创建的应用程序 作为一个Visual Basic 开发人员 现在你将对能够使用与其他平台语言相同的特性和功能而赞赏不已 例如 为了创建Windows服务 你无须再用Microsoft Visual C来编写它 你也无须求助于黑客或组装机 你可以优雅 干净 容易地使用Visual Basic NET完成这项工作 为了给你一些使用 NET Framwork的例子 我们将讨论在你的应用程序中可能需要执行的 个常见任务 跟踪与事件记录 多线程 文件系统监控和创建Windows服务跟踪与事件记录当创建一个健壮的应用程序的时候 你必须密切注意诊断和故障排除机制 代表性地 这包括编写处理打开输出目标(事件记录或文件)的跟踪组件 编写跟踪消息和关闭输出目标 然后通过自己的代码调用关于这个组件的方法 将文本传递给记录 你将所有的时间和精力花在了创建跟踪和记录子系统上 这最终并不会对解决商务问题有所贡献 但这是创建应用程序所必需的NET Framework包括类和其他数据类型 通过向你提供记录基础设施 使得记录跟踪消息变得很容易 图 给出了用于跟踪的 NET Framework类 类是System Diagnostics名称空间的一部分 Trace类提供了几个共享的方法 例如 Write方法允许你记录特定消息 而Assert方法允许你在特定的条件为假的情况下记录一条消息 Trace类将消息输出到Listeners集合中的对象 这个集合中的每个对象都属于继承自TraceListener的一个类 EventLogTraceListener 将消息写入事件记录 而TextWriterTraceListener则是将消息写入到一个文本文件中 默认情况下 DefaultTraceListener的一个实例被添加到Trace类的Listeners集合中 除了标准的监听程序以外 你可以实施自己跟踪监听程序 例如 你希望接收来自在防火墙后面的远程机器上运行的应用程序的跟踪输出 你可以编写一个跟踪监听程序 通过HTTP全球向你的服务器发送跟踪消息 这将会影响你的应用程序的性能 但只会在启用跟踪时才会对性能有所影响 代表性地 你需要有能力在编译的二进制文件中包括或去除跟踪代码 为了在Visual Basic 中做到这一点 你需要使用编译常量 并在#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() (请参阅清单 ) 当你开始创建多线程应用程序时 你很快就会认识到需要控制对共享资源的访问 如共享的类变量 NET Framework还包括几个类和数据类型 你可以使用它们对两个线程执行的动作进行同步 在最简单的情况中 你由一个需要从不同的线程中进行更新的共享变量 要这样做 你可以使用System Threading Interlocked类 例如 你可以通过编写Interlocked Increment(num)或Interlocked Decrement(num)分别使名为num的共享变量递增或递减 你还可以使用Interlocked将变量设为某一特定值 或检查两个变量是否相等 除了这种简单情况以外 你可以使用 NET Framework类来执行更复杂的线程同步 如事件和互斥体的同步 所有都来自于 NET Framework内部 而无须使用Win API Imports System IO注释 The namespace System Threading注释 contains the Thread classImports System ThreadingModule Module Private count As LongSub Main()注释 Create the ThreadStart delegateDim tStart As ThreadStart = New _ ThreadStart(AddressOf StartCounting)注释 Create the threadDim t As Thread = New Thread(tStart)Console WriteLine( Enter q to quit )t Start() 注释 start the threadWhile (Console Read()asc( q ))注释 repeat the loop until the user enters qEnd Whilet Stop() 注释 tell thread to stop processingt Join() 注释 wait until the thread finishesEnd SubSub StartCounting()Do注释 use Interlocked Increment in case 注释 another thread is accessing the same variableInterlocked Increment(count)Console WriteLine( _ After incrementing count is : count)Thread Sleep( )LoopEnd SubEnd Module 清单 使用Visual Basic NET创建线程 你创建了一个新线程 将它传递给一个ThreadStart代理 然后调用Thread Start()启动这个线程 你可以通过调用Thread Stop()来中止这个线程 然后调用Thread Join()等待它完成关闭操作 一个线程可以使用System Threading Interlocked来使变量递增或递减 此外 NET Framework提供了一个方便的机制来对工作排队 并将起分配给线程池中的某个线程 在处理多个并发工作项目或工作请求的服务器应用程序中 这非常有用 例如 对于等待输入文件 然后将它们导入到数据库中去的应用程序 可能会对每个输入文件进行排队 以在线程池中的某个单独的线程上进行处理 System Threading ThreadPool类允许你使用共享的QueueUserWorkItem方法对工作进行排队 以前要这样做 你必须得创建和管理自己的线程池 你又需要在基础设施工作而不是在解决商务问题上花大量的时间和精力文件系统监控我曾经遇到过一些应用程序 需要等待和处理某个特定目录中的文件 例如 将数据从文件导入到数据库中去的应用程序 数据文件可以从某个大型机上下载 或者被转移到某个输入目录中 该应用程序将它们导入到数据库中 你不用经常地轮询该目录检查是否有新文件 可以等待生成新文件的通知 你可以在Visual Basic 中使用Win API来做到这一点 而在Visual Basic NET中你可以使用 NET Framework类来做这项工作 但是在 NET中实施文件监控与在 NET中完成其他工作的方法更加一致 因此学习曲线是最小的 你可以使用System IO FileSystemWatcher NET类对文件系统进行监视 它提供了一些属性 允许你设置监控的路径 指定是对文件还是子目录层次的变化感兴趣 System IO FileSystemWatcher还允许你指定需要监控的文件名和文件类型(例如 * xml是指监控所有XML文件的变化) 最后 你可以指定感兴趣的变化类型 例如 只对新建文件 文件属性的变化或文件大小的变化(请参阅清单 )感兴趣 在你设置了监控内容后 你需要钩住用于感兴趣的各种事件的事件处理程序 FileSystemWatcher事件有Changed Created Deleted Error和Renamed 要处理某个事件 首先你需要编写一个与FileSystemEventHandler代理相同声明的事件处理程序 然后将这个处理程序添加到FileSystemWatcher类中 这个基于代理的体系结构允许你为同一个事件添加多个处理程序 或者对于多个事件使用同一个处理程序 而你不能使用Visual Basic 做到这一点 注释 System IO contains the 注释 file monitoring classes and typesImports System IOModule Module Sub Main() 注释 FileSystemWatcher does the real work Dim fw As New FileSystemWatcher() 注释 WaitForChangedResult is what you注释 get back when a change occurs Dim result As WaitForChangedResult 注释 set the path to monitor fw Path = C:WINNT注释 tell it whether to watch files or directories fw Target = WatcherTarget File 注释 tell it whether to include subdirs fw IncludeSubdirectories = False 注释 hook up handlers AddHandler fw Created New FileSystemEventHandler(AddressOf OnFileNotify) 注释 enable the watcher fw Enabled = True DoConsole WriteLine( Beginning to monitor ) 注释 this is where we actually wait注释 waiting blocks execution for the specified timeoutresult = fw WaitForChanged(WatcherChangeTypes All )Console WriteLine( Hit Enter to continue q to quit ) Loop While (Console ReadLineq )End Sub注释 This is the delegate that gets 注释 called when a file is created Public Sub OnFileNotify(ByVal source As Object ByVal e As FileSystemEventArgs)Console WriteLine( Notification received for file change type is _e FullPath e ChangeType) End SubEnd Module 清单 使用FileSystemWatcher监控某个文件夹是否有新文件
lishixinzhi/Article/program/net/201311/11618
vb.net互斥量的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于互斥微操作、vb.net互斥量的信息别忘了在本站进行查找喔 。

    推荐阅读