一、异常处理
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-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
VB.Net程序设计:制作自己的分隔线控件(LineH、LineV)水平分隔线 LineH.vb,垂直分隔线 LineV.vb的完整代码 http://blog.csdn.net/linjimu/archive/2006/08/15/1065745.aspx
vb.net多线程例子 ,创建了三个方法:TestMethod1, TestMethod2和TestMethod13,并且这三个方法功能相似,通过循环向输出设备输出
一位朋友说。他的电脑要每一个小时自动打开一个程序。想到用系统自带的那个任务计划。达不到我要的效果。于是自己写一个这样的程序。...程序和界面说明:http://blog.csdn.net/linjimu/archive/2008/10/06/3023532.aspx
自动关机,在关机前一分钟会提示。可以注销,重启,关机。 VB.Net。在win2000 vs2005测试通过。 界面用法:http://csdntestimg.hi.csdn.net/app_uploads/linjimu/20090419/212309657.p.png
VB.Net读取ini文件的例子,和读取xml文件的例子。两种方法的比较。建议还是用Xml比较好。System.Xml
《ASP.NET 4高级编程:涵盖C#和VB.NET(第7版)》内容简介: 在创建快速、安全的Web应用程序时,ASP.NET可以帮助您尽 可能高效地完成该任务。ASP.NET的每次版本更新都会较前一 版本有所改进,去除之前需要编写的许多...
《ASP.NET3.5入门经典:涵盖C#和VB.NET》(第5版)是一本非常好的ASP.NET入门书籍。《ASP.NET3.5入门经典-涵盖C#和VB.NET》以建立一个实际的Web站点为主线,从最初的没有任何功能的简单站点开始,然后逐步增加功能和...
VB.net多线程技术知识
本重新为vb.net多线程委托托管实例源码,主要有以下功能模块: 1.Thread多线程技术功能模块, 2.3个实例窗体如何进行委托托管及参数传输功能模块 3.告诉你如何屏蔽错误及不屏蔽错误,如何跨窗口运行。程序以最...
vb.net初学者系列【vb.net多线程开发】 为您的程序增添动力
无奈之下,只好转向VB.NET,没想到问题很快就解决了。强大的多线程支持使我死抱VB6多年不放的我,终于领略到面向对象的强捍。本代码可实现每个下载文件占用一个线程,多个文件多个线程同时工作的功能。
vb.net全局错误全局异常处理捕获,调用非常简单,再也不用担心意外错误!
这是第六版的介绍《ASP.NET 4入门经典:涵盖C#和VB.NET(第6版)》内容简介:ASP.NET是.NET Framework的一部分,用于构建内容丰富的动态Web站点。其最新的版本ASP.NET 4对上一版进行了许多改进,包括增强了Web窗体,并...
vb.net学习教程:visual basic.net入门,工程管理,visual basic.net语言体系结构,visual basic.net的常用控件,应用程序界面,visual basic.net的ODP结构。
原创作品,因为自己一个项目需要用到大文件下载,在网上找了很久没有找到VB.NET下载大文件的实例,所以自己写了这个,采用多线程控制,带进度条和当前下载速度计算。 源码中包含有大量中文注释,也非常适合初学者...
初学VB.net 上次发了一个VB.net 2008 做的计算器,这回对上次那个计算器进行了升级,增加了许多功能(有些功能其实对于计算器来说没有必要,但我只是为了学习VB.net,所以把常用的控件几乎都在这个计算器实现了一下!...
VB.NET 多线程入门的小例子 简单易懂
此文件为源代码,VB2010编写,可是实现程序自动更新,把这个程序的文件打包到安装文件里,用AppStart启动程序,自动下载配置文件比较服务器与本地的是否相同,如果不相同则下载服务器文件替换本地文件然后启动真正的...
CSDN网友提问:直接拖动ListBox的数据到某个文件夹或桌面就实现下载?http://topic.csdn.net/u/20110719/16/c18ecef8-b71a-4a33-a83b-c9b108fade16.html