重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

vb点虐 中ui线程 vbnet中有几种线程

VB.NET中的多线程和委托是什么关系? 能不能给我一个通俗易懂的范例,谢谢

委托,Delegate

创新互联-专业网站定制、快速模板网站建设、高性价比常山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式常山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖常山地区。费用合理售后完善,十多年实体公司更值得信赖。

就是让你处于这个线程里时,委托另一个线程去执行一些动作

我简单举一个写richtextbox的例子:

////////////////////////////////////////////

'创建一个名为 MySubDelegate 的委托。

Delegate Sub MySubDelegate(ByVal txt As String)

'写信息到富文本主窗口

Private Sub txtW(ByVal txt As String)

Dim msgd As New MySubDelegate(AddressOf Me.txtW1)

Dim arg(0) As Object

arg(0) = txt

Me.Invoke(msgd, arg)

End Sub

'委托指向

Private Sub txtW1(ByVal txt As String)

Me.RichTextBox1.AppendText(txt)

End Sub

/////////////////////

这样,你在多线程应用时,在其他线程里用txtW(str)来写richtextbox,就不会产生错误了。不然,直接垮线程写richtextbox,可能会出现和UI线程的冲突。

vb点虐 中开一个线程,直到新窗体启动完成

虽然你的想法是在 LoginBtn_Click 事件中将复杂的操作分离出去以减轻UI的负担, 这很好完全没有问题.

但是问题在于 Me.Invoke(dh)这里,若是ChkLogin里面仍然是大规模的操作呢 你的代码就又变成将很复杂的操作扔给了UI, 当然会出现窗体无法拖动的情况了.

解决办法很简单, 很多种. 将ChkLogin()里的操作直接放在DelegateLogin()里面吧 me.invoke仅仅只是做简单的轻量的刷新之类的操作就好了.

希望能帮上你的忙.

在vb点虐 中,多线程如何使用

Sub Main() Dim thr As New Thread(AddressOf 循环) thr.Start("a") End Sub Sub 循环(a() As String) '这里随你干什么循环也行 For Each i As String In a MsgBox(i) Next End Sub

VB.NET用子线程进行大批量数据传输,UI卡死,请高手指教。代码如下

试试这个怎么样,添加在子进程里面,就加在你批量传输代码里的每一个传输后面,也就是大批量中的每传输一个数据就暂停一下,而不是每一个大批量才暂停一下

System.Threading.Thread.Sleep(10) '让它走慢一点


网页名称:vb点虐 中ui线程 vbnet中有几种线程
网页链接:http://cqcxhl.cn/article/ddipjhp.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP