it167.com  设为主页
 收藏本站
 
  资讯:业界动态 | 软件动态 | 人物专栏 | 安全资讯 | 网络生活 | 电子商务 | 小游戏 | 视频 | 美女图片 | 音乐
  网络编程 | 网站运营 | 网页制作 | 图形图象 | 操作系统 | 媒体动画 | 软件教学 | 网络应用 | 邮件系统 | 网络安全 | 认证考试
asp | .net | php | jsp | Sql | java | Dreamweaver | FrontPages | Javascript | css | Coreldraw | photoshop | Flash | Coreldraw
当前位置: > 主页>网络编程>Jsp>Jsp实例教程>使用.NET多线程技术显示实时股票信息(1)
最新新闻

·机会与整合 边缘化互联
·TOM-Skype新增三大本地
·雅虎抢闸邮箱竞赛 网易
·新浪抢攻北京奥运
·洞悉网络口碑的掘金机会
·拆解网络病毒黑金交易
·木马下载器近期出现新变
·《互联网周刊》第17期文
·Web2.0是否催生自吹自擂
·三张宝宝裸照招来MSN封
热门新闻
·jsp 下实现防止重复在线
·一个必看的Java程序
·存储过程
·构建自己的基于Java的超
·构建自己的基于Java的超
·Web应用中的中文问题
·学习MySQL常用操作命令
·MySQL中修改密码及访问
·Hibernate 3新增XML关系
·java实现ftp下载文件
推荐新闻
 
 

使用.NET多线程技术显示实时股票信息(1) 

作者:   来源:it167   点击:   日期:2007-01-28

示例项目使用计时器控件(Timer,在工具箱中)来显示第二个线程的状态信息。把计时器拖放到窗体上,并把它的Interval属性设置为500,这使该计时器的Tick事件每半秒钟(500毫秒)调用一次。Tick事件处理程序中的代码更新了标签控件lblThreadStatus中的线程状态信息:

Private Sub Timer1_Tick(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Timer1.Tick

 lblThreadStatus.Text = "Thread state: " & _

t2.ThreadState.ToString

End Sub

第二个图表也使用与第一个图表相同的初始化代码:

Private Sub Chart2_Load(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Chart2.Load

 '在x轴上每5点显示时间

 Chart2.AxisX.Step = 5

 '每个点之间用5个象素分隔

 Chart2.AxisX.PixPerUnit = 5

 '使图表可以滚动

 Chart2.Scrollable = True

 '打开和关闭通讯管道-

 Chart2.OpenData(COD.Values, 1, COD.Unknown)

 Chart2.CloseData(COD.Values)

End Sub

你点击第二个图表的“获取股票报价”按钮的时候,代码建立一个新的线程--同时激活计时器,这样窗体才能够显示线程的状态信息:

Private Sub btnGetStockQuote2_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles btnGetStockQuote2.Click

 Dim sq As New StockQuote

 sq.StockSymbol = cmbStocks2.SelectedItem

 sq.ChartControl = Chart2

 t2 = New Thread(AddressOf sq.InvokeWebService)

 t2.Start()

 '激活暂停和停止按钮

 btnPauseContinue.Enabled = True

 btnStop.Enabled = True

 '激活计时器控件

 Timer1.Enabled = True

End Sub

按F5测试这两个图表(图7所示)。为每个图表选择一只股票,你将看到这两个图表同步显示。

点击放大此图片

图7:增强的两图表应用程序

增强的版本同时显示了两个图表。

当第二个线程运行的时候,你可以注意到其状态在Running和WaitSleepJoin之间交替。这是因为某个线程要么在执行(Running),要么在睡眠(WaitSleepJoin)。当该线程被暂停的时候,它的状态是WaitSleepJoin、Suspended。当该线程被取消的时候,它的状态先是AbortRequested,接着变成了Stopped。

如果要暂停该线程,需要首先检测运行中线程的状态,然后使用Suspend()方法。在暂停一个线程之后,你可以使用Resume()方法继续执行它。

Private Sub btnPauseContinue_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles btnPauseContinue.Click

' 如果线程处于睡眠和运行状态就挂起它

If t2.ThreadState = ThreadState.WaitSleepJoin _

 Or t2.ThreadState = ThreadState.Running Then

 t2.Suspend()

 btnPauseContinue.Text = "Continue"

Else

 ' 继续该线程

 t2.Resume()

 btnPauseContinue.Text = "Pause"

End If

End Sub

停止线程则使用Abort()方法:

Private Sub btnStop_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles btnStop.Click

Try

 If Not t2.ThreadState = ThreadState.Stopped Then

btnPauseContinue.Enabled = False

btnStop.Enabled = False

t2.Abort()

 End If

Catch ex As Exception

 MsgBox(ex.ToString)

End Try

End Sub

通过运行示例项目,你会发现自己已经能够使用多线程技术建立应用程序,使应用程序在执行后台事务的时候,仍然保持响应。尽管本文的示例使用的是Web服务,但是相同的原则也可以应用于其它类型的后台事务。例如,你可以改变这个应用程序以读取外部设备(例如温度计或血压计监视设备)的数据。

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)





共4页: 上一页 [1] [2] 3 [4] 下一页
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·Struts+Hibernate简化J2EE的文件操作(1) ·Hibernate能够满足我们的验证需求
·JBuilder2005实战JSP之日志和部署(7) ·jsp留言板源代码四: 给jsp初学者.
·jsp文件操作之追加篇 ·在JSP中使用JavaMail(一)

   文章评论:(0条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:it167  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。