vb.net中使用多线程
2010-06-21 13:48
232 查看
在对POS机上的销售系统进行了再次修改之后,又对这个系统进行充分而有详细的考虑。主要是对健壮性方面,要考虑到所有可能出现的问题。
昨天坤哥提出了一中出错的可能,就是如果说要进行打印的话没有纸了,或者是纸不够了怎么办?
按照我们这个程序的设计来说,这时候会程序会进入等待状态,这意味着现在无法进行任何操作,如果时间过于长的话,这时候可能会导致程序意外崩溃,虽然进过测试我们的程序不会崩溃,但是如果长时间的无法操作并且也没有提示的话那是一件十分不美好的事情。
因此,这是按照逻辑应该有一个提示 “正在进行远程打印请稍等……”。但是这个提示怎么弹出来?因为开始时候没有考虑多线程,在进行打印时肯定是打印的这段代码已经独占了整个进程了,也就是无法再执行别的代码了,别的代码是指在本销售系统中的另外的代码。这时候程序将会出现假死。其他的代码段根本就得不到执行。
所以考虑使用多线程。于是乎就研究了一下多线程。下面来看实例:
新建工程如下:
![](http://hi.csdn.net/attachment/201006/21/0_1277128115YTyt.gif)
然后在窗体中添加代码:
别的不说了,自己看代码吧,然后看一下效果:
先看单线程的:
![](http://hi.csdn.net/attachment/201006/21/0_12771281165hAa.gif)
![](http://hi.csdn.net/attachment/201006/21/0_1277128117dTQp.gif)
只有关闭程序才能解决问题。
再来看多线程:
![](http://hi.csdn.net/attachment/201006/21/0_1277128118jMyp.gif)
![](http://hi.csdn.net/attachment/201006/21/0_1277128119nWU8.gif)
点击停止多线程,才可以停止,不然的话你关闭程序了依然会有一个线程在玩耍。这可不好玩。
昨天坤哥提出了一中出错的可能,就是如果说要进行打印的话没有纸了,或者是纸不够了怎么办?
按照我们这个程序的设计来说,这时候会程序会进入等待状态,这意味着现在无法进行任何操作,如果时间过于长的话,这时候可能会导致程序意外崩溃,虽然进过测试我们的程序不会崩溃,但是如果长时间的无法操作并且也没有提示的话那是一件十分不美好的事情。
因此,这是按照逻辑应该有一个提示 “正在进行远程打印请稍等……”。但是这个提示怎么弹出来?因为开始时候没有考虑多线程,在进行打印时肯定是打印的这段代码已经独占了整个进程了,也就是无法再执行别的代码了,别的代码是指在本销售系统中的另外的代码。这时候程序将会出现假死。其他的代码段根本就得不到执行。
所以考虑使用多线程。于是乎就研究了一下多线程。下面来看实例:
新建工程如下:
![](http://hi.csdn.net/attachment/201006/21/0_1277128115YTyt.gif)
然后在窗体中添加代码:
Imports System.Threading Public Class Form1 Dim runThread As Thread Dim i As Double Dim str As String Private Sub bntRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bntRun.Click run() End Sub Private Sub run() While True str = "正在运行多线程" i = i + 1.345 i = i * 1.23425 i = i / 1.23425 i = i - 1.345 End While End Sub Private Sub btnThread_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThread.Click runThread = New Thread(AddressOf run) runThread.Start() Me.Text = i.ToString End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("程序拥挤吗?现在i变成了:" + i.ToString) End Sub Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click runThread.Abort() str = "线程结束" End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If runThread.IsAlive Then runThread.Abort() End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Me.Text = str + i.ToString End Sub End Class
别的不说了,自己看代码吧,然后看一下效果:
先看单线程的:
![](http://hi.csdn.net/attachment/201006/21/0_12771281165hAa.gif)
![](http://hi.csdn.net/attachment/201006/21/0_1277128117dTQp.gif)
只有关闭程序才能解决问题。
再来看多线程:
![](http://hi.csdn.net/attachment/201006/21/0_1277128118jMyp.gif)
![](http://hi.csdn.net/attachment/201006/21/0_1277128119nWU8.gif)
点击停止多线程,才可以停止,不然的话你关闭程序了依然会有一个线程在玩耍。这可不好玩。
相关文章推荐
- 在VB.NET中如何使用多线程详细知识
- VB.NET多线程使用例子
- 如何使用vb.net多线程
- [NET]在你的VB.NET应用程序中使用多线程
- 使用VB.NET开发多线程
- VB.NET的示例使用 AddressOf 运算符来指定线程的启动函数(多线程)
- 使用VB.NET开发多线程
- VB.net使用多线程与委托解决时间延迟的问题
- 使用VB.NET开发多线程
- 使用VB.NET开发多线程
- VB.NET中使用ListView控件的简单例子
- VB.NET 数组的定义 动态使用 多维数组
- C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
- 在Vb.Net中弹出对话框的简单方法。使用Messagebox
- VB.NET中使用代表对方法异步调用
- 如何使用C#或者VB.NET读写Access数据库的标题(Caption)、描述(Description)等字段信息?
- VB.NET 章鱼哥 如何在项目中使用外部文字格式
- vb.net—SQLHelper类的使用
- vb.net开发中使用excel插件学习
- C#中如何使用VB.NET的My关键字