`
kiki1120
  • 浏览: 314513 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

VB.Net 知识要点:(4) 异常处理和多线程

    博客分类:
  • .Net
 
阅读更多

一、异常处理

 

1.语法错误
2.Run-Time错误
3.逻辑错误
异常处理机制
Try
 ...
Catch ex As 异常处理类
 ...
Finally
 ...
End Try

 

异常处理类
ApplicationException 发生非关键性应用程序错误时所返回的异常情况
ArgumentException 当其中一个提供给方法的自变量为无效时所返回的异常情况
ArgumentNullException 由不允许自变量为Null的方法返回的异常情况
ArgumentOutOfRangeException 由验证自变量超出指定范围内的方法返回的异常情况
DirectoryNotFoundException 找不到文件或目录的一部分时所返回的异常情况
DivideByZeroException 尝试将整数或小数值除以零时所返回的异常情况
EndOfStreamException 尝试超过数据流末端进行读取时所返回的异常情况
Exception  所有异常情况的基底类
ExternalException 发生所有以Runtime外部环境为目标的异常情况的基底类
FileNotFoundException 尝试访问不存在于磁盘上的文件失败时所返回的异常情况
IndexOutOfRangeException 当数组索引不正确时,由Runtime返回的异常情况
InvalidCastException 无效的数据类型(Casting)或明确转换所返回的异常情况
InvalidOperationException 当方法调用对对象的目前状态是无效时所返回的异常情况
NullReferenceException 当参考Null对象时,由Runtime返回
OutOfMemoryException 当没有足够的内存继续运行程序时,所返回的异常情况
StackOverflowException 当运行堆栈因为具有过多暂停方法调用而溢出时所返回的异常情况
SystemException  所有Runtime所产生错误基底类

 

抛出异常
Throw new InvalidCastException


二、多线程

 


Imports System.threading
Module Module1
 Sub Main()
  '显示线程的编码
  Console.WriteLine(Thread.CurrentThread.GetHashCode)
  while(True)
   '显示一个随机数
   Console.Write(Int(Rnd()*42)+1&" ")
   '线程停止一秒钟
   Thread.CurrentThread.Sleep(1000)
  End While
  Console.ReadLine()
 End Sub
End Module

 

 

创建多线程
第一种
在创建多线程之前,必须先创建一个新对象,以便赋值给线程来负责运行
Dim m1 As New game_machine("game")
Dim t1 As New System.Threading.Thread(AddressOf m1.generate_number)
game是类名称,m1是对象名称,设置起始程序为generate_number方法
启动线程
t1.Start()
第二种
Dim t1=New game_machine2()
t1.startup()
Public Class game_machine2
 private thread1 As Thread
 Public Sub startup()
  Dim threadx As TRhreadStart
  threadx=New ThreadStart(AddressOf Me.Start)
  thread1=New Thread(threadx)
  thread1.start()
 End Sub
 Private Sub Start()
  ...
 End Sub
End Class

 

查看线程状态
使用ThreadState属性可以了解每一个线程的状态
Aborted  线程在Stopped状态
AbortRequested Abort方法已在线程上被调用,但线程还没有收到尝试终结它的暂停
Background 线程正作为背景线程运行中
Running  线程已经启动,并未受封锁,也没有暂停
Stopped  线程已经停止
StopRequested 线程正被要求停止中
Suspended 线程已经暂停
SuspendRequested 线程正被要求暂停中
Unstarted Thread.Start 方法还没有在线程上被调用
WaitSleepJoin 线程因为调用Wait、Sleep或Join而被封锁

 

线程属性
ApartmentState 取得或设置线程为单一线程(STA)或多线程(MTA)状态
IsAlive  目前线程的运行状态
IsBackground 取得或设置线程是否为背景线程
IsThreadPoolThread 取得线程是否属于Managed线程集区
ThreadState 取得线程的状态

 

线程方法
Abort  退出线程
AllocaeDataSlot 在所有的线程上分配未命名的数据位置
AllocateNamedDataSlot 在所有的线程上分配命名的数据位置
GetData  从目前线程指定位置捕获数值
Interuupt 中断在WaitSleepJoin线程状态的线程
Join  封锁调用线程,直到线程退出为止
ResetAbort 取消目前线程要求的Abort
Resume  使暂停的线程继续
SetData  在目前运行的线程上的指定位置中设置数据
Sleep  在指定的毫秒数内封锁目前的线程
Start  将目前运行个体的状态变更为ThreadState.Running
Suspend  将线程暂停,或者如果线程已经暂停,则没有影响

 

线程优先权
Priority属性可以设置线程的优先权,其权值优先级如下:
Highest > AboveNormal > Normal > BelowNormal > Lowest
优先权值高的线程将占用较多的CPU资源,而优先权值低的线程必须等待其他较高权值的线程运行后才会轮到使用CPU资源。

 

线程调度
创建两个线程对象,如果希望第一个线程运行完成,再运行第二个线程,则可以使用Join方法实现
t1.Start()
t1.Join()
t2.Start()
t2.Join()

 

线程同步
使用Mutex对象的WaitOne方法和ReleaseMutex方法,可以限制同一时间只能有一个线程对象运行该方法,其他想要运行这个方法的线程必须等到此方法空闲时才能开始运行。
Private Shared mut1 As New Mutex
mut1.WaitOne()
...
mut1.ReleaseMutex

 

线程间沟通
Monitor.Wait() 让线程进入等待状态
Monitor.Pulse() 唤醒第一个进入等待状态的线程
Monitor.PulseAll() 唤醒所有等待状态的线程

分享到:
评论

相关推荐

    VB.NET远程屏幕监控

    在VB.NET环境中开发远程屏幕监控程序是一项技术挑战,它涉及到多个关键知识点,包括网络通信、图形处理、多线程以及用户界面设计等。下面将详细阐述这些知识点。 首先,【屏幕监控】涉及到的是计算机视觉技术,主要...

    用vb.net编写从数据库往excel文件写数据

    实际开发中,可能还需要考虑性能优化、多线程处理、错误日志记录等问题,以提高程序的稳定性和效率。在压缩包中的"Report"文件可能是这个过程中的一个报告或者样例代码,可以进一步学习和理解。

    Visual Basic.net at work:build 10 enterprise project

    - **实用的技术要点**:书中涵盖了许多实用的技术要点,如数据绑定、事件处理、多线程编程等,这些都是构建复杂企业级应用时不可或缺的知识点。 #### 具体项目分析 - **WinForms Library** - **项目目标**:构建...

    餐饮服务源程序vb.net

    9. **多线程编程**:为了提高系统的响应速度,某些耗时的操作如数据库查询、网络通信可以放在独立的线程中执行,VB.NET提供了Threading类库支持并发编程。 10. **数据加密**:为了保护敏感信息(如顾客支付信息),...

    vb.net 2003 餐饮管理系统

    VB.NET支持多线程编程,通过Thread类可以实现异步处理,提高系统响应速度。 4. **会员管理**:会员系统用于记录客户信息,提供积分、优惠等服务。VB.NET提供了丰富的数据绑定功能,可以轻松实现用户信息的录入、...

    面试大全 包含vb asp.net java 等it面试题 下载

    面试中可能涵盖的知识点有:基本语法(如封装、继承、多态)、异常处理、集合框架(List、Set、Map等)、IO流、线程、设计模式、JDBC(Java Database Connectivity)进行数据库操作、Servlet和JSP(JavaServer Pages...

    图书馆管理系统论文(VB.NET)

    3. **关键技术讨论**:深入探讨VB.NET中的关键技术和方法,如数据库操作、多线程、异常处理等。 4. **系统测试**:描述系统的测试策略,包括单元测试、集成测试和系统测试,展示测试结果。 5. **性能优化**:讨论...

    VB源码vb.net聊天通信软件开发(论文+源代码+开题报告+答辩PPT)

    5. **多线程处理**:为了提升软件性能,开发者往往需要在程序中引入多线程技术。VB.NET提供了Thread类以及BackgroundWorker组件等工具,方便地实现了并发处理能力。 6. **第三方API集成**:通过调用第三方提供的API...

    北大青鸟S2深入.NET平台和C#编程总结复习

    5. 构建高级功能:包括异常处理、线程同步、委托和事件、Lambda表达式、LINQ查询等,这些都是C#高效编程的工具。 6. ASP.NET Web开发:了解如何使用ASP.NET框架创建Web应用程序,包括MVC模式、Web API、SignalR等...

    计算机程序2010网络版

    VB.NET提供了Try-Catch语句块,用来捕获和处理运行时可能出现的异常,保证程序的稳定运行。 6. **多线程编程**:在处理大量数据或执行耗时任务时,多线程可以提高程序的响应速度。VB.NET中的Thread类和ThreadPool类...

    Java和.net的笔记

    Java笔记可能包含了语言基础,如类、对象、封装、继承、多态等概念,以及高级特性如异常处理、集合框架、IO流、多线程、反射等。"java笔记.doc"可能是这些主题的详细阐述,有助于加深对Java语言特性的理解。 另一...

    .NET程序员_2008最新

    它基于.NET框架,并允许开发者使用多种编程语言(如C#或VB.NET)来创建功能丰富的Web应用程序。ASP.NET支持事件驱动的编程模型,可以更高效地处理Web请求。 2. **C#**:是一种面向对象的编程语言,由微软设计并用于...

    《C#.NET开发者手册》PDF

    此外,也会涉及Assemblies和GAC(全局程序集缓存)的作用,以及如何利用.NET进行异常处理和线程管理。 对于Web开发,手册可能包含ASP.NET的内容,这是一个用于构建动态网站、Web应用和服务的框架。读者可以了解到...

    .NET Compact Framework开发技巧大串烧

    11. **多线程编程**:在移动设备上使用多线程提升性能和用户体验的技巧。 12. **代码重用**:如何在.NET Compact Framework和.NET Framework之间实现代码共享,利用Shared Projects或Portable Class Libraries。 ...

    .net微软内部资料

    - **并发与线程管理**:CLR提供了强大的线程管理和同步机制,使得多线程编程更加简单高效。 #### 四、.NET Framework类库(FCL) .NET Framework类库是一组预先编写的类集合,这些类为开发者提供了广泛的功能,...

    VB高级编程100例.pdf

    3. **数据格式化**:在客户端与服务器端之间传输的数据需要进行适当的格式化,以便于识别和处理。本例中使用了特定的字符(如“@”)来分隔命令ID和命令参数。 4. **命令处理**:服务器端程序根据接收到的命令ID执行...

    VB考试要点

    VB考试的要点主要涵盖程序设计语言的发展、Visual Basic的特点、.Net Framework架构以及变量和结构体的使用。让我们深入探讨这些关键概念。 首先,程序设计语言经历了从机器语言到汇编语言再到高级语言的演进。机器...

    毕业设计-基于Visual Basic的试题题库自动组卷系统设计与代码实现

    5. 异常处理:确保程序的稳定性和用户体验,添加错误捕获和处理机制。 四、系统流程 1. 用户登录后,可以添加、编辑和删除题目,每个题目包含内容、答案、分值、难度等属性。 2. 设定组卷规则,如科目、题型、难度...

    VB问题全攻略

    3. **多线程**:VB允许创建多线程应用,提高程序的并发处理能力。 4. **网络编程**:VB可以用来开发网络应用,如HTTP请求、FTP上传下载等。 通过深入学习这些知识点,新手可以逐步建立起对VB编程的全面理解,从而...

Global site tag (gtag.js) - Google Analytics