vb.net线程安全 net 线程安全

求教VB.net多线程问题多线程是用于处理复杂项目的
打个比方
你的主程序线程A中有个循环vb.net线程安全,由于代码是一行行走的vb.net线程安全,所以循环结束前下面的代码无法运行vb.net线程安全,而此时主界面的反应就类似卡死的样子,你点击按钮也没有反应,因为主线程在忙着循环呢,所以对按钮的事件代码要等待了,如果要避免这种情况,就要用到多线程,另开一个新线程专门用来执行循环代码,主界面就不会卡死了,只要在循环结束后将结果传回主线程调用就可以了 , 再复杂点要涉及到委托,控制了
按你的要求其实你的代码用不到多线程,只要把sleep放到两段代码中间就可以了 。
新线程结束用thread.abort()
VB.NET 中 HASHTABLE 的疑问我们知道Hashtable 是线程安全的,可由多个读取器线程或一个写入线程使用 。
它的特点是:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.
HashMap 与Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null为关键码的.
我们知道在使用内存中的地址时是按照哪里有空闲的就使用哪里的 。怎么可能一直由着我们输入的顺序给你开放地址呢?
vb.net通过线程给lable.text赋值问题为了线程安全,微软规定线程不能直接访问窗体控件,需要用委托的方式,窗体代码中增加:
Delegate Sub SetTextDelegate(txt As String)
Private Sub SetText(ByVal Result As String)
If Me.lblTime.InvokeRequired Then
Dim d As New SetTextDelegate(AddressOf SetText)
Me.Invoke(d, New Object() {Result})
Else
Me.lblTime.Text = Result
End If
End Sub
然后在线程中需要更改lblTime时,用:
SetText("当前时间:"System.DateTime.Now)
大神你们好,请帮我看一下这段vb.net的 Invoke代码是什么意思...其实这行代码和C_RunCompleted(image, Nothing)的效果类似,但在BackgroundWorker中解决了“线程安全”的问题 。
你可以把多线程看成几个工人同时干活 。如果大家都共用一份材料 , 然后我给它补一块,你给它割一块,他再把其它材料焊上去,岂不是乱套了?Invoke的作用就是用一个线程模型调用方法,让主线程先放一边,这样就不会乱套了,也就是“线程安全” 。你试试直接改成上面的代码 , 运行时会引发跨线程异常
红糖暖胃____关于控制VB.NET的多线程thead抛出的线程数量的问题.__冰天雪地裸体腾空360°跪玻璃渣问vb.net线程安全我告诉vb.net线程安全你思路,vb.net线程安全你自己去实现 。
建议你用“守护线程”的方式去做,这样做对于你一个小任务来说更合适 。首先,你要建立一个队列,将所有下载任务放入队列 。注意 , 这个队列必须是“线程安全”的,即两个线程不会抢到同一个任务 。然后只开10个线程 。这些线程会从队列中读取任务 。当一个线程不能再从队列中读取任务时,也就是队列为空时,退出 。等所有线程都退出后,你的程序就结束了 。
还有一种方法,叫“线程池”,也就是你说的方法,稍微复杂一点:
指定一个变量,用来表示线程的数量 。刚开始为0 , 每开一个线程+1 。当一个线程完成任务退出后 , 这个变量-1 。直到所有任务都完成后,不再产生新线程 。
vb 怎么实现多线程很简单,调用API函数CreateThread
但是用vb做多线程的关键不在于创建 , 而是在于线程的不稳定,其不稳定是由于vb6自身的控件(如按钮、文本框等)不是线程安全的,怎么用你程序就可能怎么挂 , 所以这些个玩样儿在多线程中统统不能用 。

推荐阅读