读书人

请求详细说讲解下BeginInvoke这个如何

发布时间: 2012-02-22 19:36:56 作者: rapoo

请求详细说讲解下BeginInvoke这个怎么用?
这几天已经是第二次看到这个关键字了,好像都是和线程(Thread)结合使用的,在论坛上也没有相关的讲解,有谁可以说详细点。


====================================
只要说得详细,就给分了,绝不食言...
====================================

[解决办法]
在创建控件的基础句柄所在线程上异步执行委托。

重载列表
在创建控件的基础句柄所在线程上异步执行指定委托。

[Visual Basic] Overloads Public Function BeginInvoke(Delegate) As IAsyncResult
在创建控件的基础句柄所在线程上,用指定的参数异步执行指定委托。

[Visual Basic] Overloads Public Overridable Function BeginInvoke(Delegate, Object()) As IAsyncResult Implements ISynchronizeInvoke.BeginInvoke

[解决办法]
在创建控件的基础句柄所在线程上异步执行委托。

重载列表
在创建控件的基础句柄所在线程上异步执行指定委托。
[Visual Basic] Overloads Public Function BeginInvoke(Delegate) As IAsyncResult

在创建控件的基础句柄所在线程上,用指定的参数异步执行指定委托。
[Visual Basic] Overloads Public Overridable Function BeginInvoke(Delegate, Object()) As IAsyncResult Implements ISynchronizeInvoke.BeginInvoke

异步委托
异步委托提供以异步方式调用同步方法的能力。当同步调用一个委托时,Invoke 方法直接对当前线程调用目标方法。如果编译器支持异步委托,则它将生成 Invoke 方法以及 BeginInvoke 和 EndInvoke 方法。如果调用 BeginInvoke 方法,则公共语言运行库将对请求进行排队并立即返回到调用方。将对来自线程池的线程调用该目标方法。提交请求的原始线程自由地继续与目标方法并行执行,该目标方法是对线程池线程运行的。如果已经对 BeginInvoke 指定了回调,当目标方法返回时将调用它。在回调中,使用 EndInvoke 方法来获取返回值和输入/输出参数。如果没有对 BeginInvoke 指定回调,则可以在提交请求的原始线程上使用 EndInvoke。

其实可以看下MSDN里面都有相关说明。
[解决办法]
才10分,再加点吧:

当你跨线程调用时会发生错误,BeginInvoke用于安全的跨线程调用


Imports System.Threading
Public Class Form1
Delegate Sub InvokeDelegate()
Private GetServerList As Thread

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
TextBox1.Text = " "
GetServerList.abort()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetServerList = New Thread(AddressOf Slist_Flush)
GetServerList.Start()
End Sub

Private Sub Slist_Flush()
Do
TextBox1.BeginInvoke(New InvokeDelegate(AddressOf InvokeMethod_Add))
Thread.Sleep(1000)
Loop
End Sub

Private Sub InvokeMethod_Add()
TextBox1.Text = Now
End Sub
End Class


[解决办法]
http://www.uml.org.cn/net/200611025.htm
这编文章可以帮助理解

读书人网 >VB Dotnet

热点推荐