本文介绍了同步线程会禁用我的应用程序工具的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用同步线程,但是当线程启动时我无法点击我的应用程序上的anthing ...但我需要在应用程序上做一些工作,即使线程计时器已打开,所以怎么能我这样做了吗?



请注意我在vs 2010上使用vb.net



这里是我的代码:



 私人 共享线程作为  System.Threading.AutoResetEvent( False 

私有 Sub start_btn_Click( sender As System。 Object ,e As System.EventArgs)句柄 start_btn.Click
StartTask()
结束 Sub

Sub StartTask()
Dim Tpool As System.Threading.ThreadPool
Dim arg 作为 字符串 = SomeArg
ThreadPool.QueueUserWorkItem( New System.Threading.WaitCallback(_
AddressOf 任务),arg)' 将任务排队。
thread.WaitOne( )' 等待线程调用Set。
writeMsg( 线程完成。 at list_rpt
StartTask()
结束 Sub

Sub 任务( ByVal Arg 作为 对象
writeMsg( 线程从 list_rpt
System.Threading.Thread.Sleep( 4000 ' 等待4秒。
DoWork()
结束 Sub

公开 Sub DoWork()
MTProcessTable = selectMtProcess()
mtCount = MTProcessTable.Row s.Count
writeMsg(mtCount& list_rpt)

对于 每个 row 作为 DataRow MTProcessTable.Rows
process = Process_class
process.id = row( mt_id
process.mo = row( mt_mo
流程.mt = row( mt_mt
process.datain = row( mt_datain

keyid = validateKey(process.datain)
MOTable = selectMO(process.mo,process.mt)
moRowNb = MOTable.Rows.Count()
MO = MO_class
如果 moRowNb< ;> 0 然后
MOrow = MOTable.Rows( 0
MO.newuser = MOrow( newuser
MO.sim_id = MOrow( sim_id
结束 如果
尝试
选择 案例 keyid
案例 1
如果 moRowNb = 0 然后
如果 insertMO(process.mo,process.mt)然后
writeMsg( 1 MO插入/更新为 rpt_txt
message = msgTable.Rows( 0 )( 1 )。ToString()
MsgBox(消息)
否则
writeMsg ( 1 MO无法插入 rpt_txt
结束 如果
结束 如果
案例 2
如果 moRowNb = 0 那么
writeMsg( 1进程,MO未激活,数据'是', rpt_txt
message = msgTable.Rows( 7 )( 1 )。ToString()
MsgBox(消息)
结束 如果
Catch ex As 异常
logFile( executeTimer ----& ex.Message)
updateProcessed(process.id,ex.Message, 10
最后
updateProcessed(process.id,message, 1
结束 尝试
下一步
thread。设置()
结束 Sub
解决方案


这篇关于同步线程会禁用我的应用程序工具的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 05:31