kobjectse
derEve
tArgse
MyMethodmymethodIAsy
cResultasy
cResultmyBegi
I
vokeMethodCompletedmy
要注意的是,这里使用了Begi
I
voke方法的最后两个参数(如果被调用的方法含有参数的话,这些参数将作为Begi
I
voke的前面一部分参数,如果没有参数,Begi
I
voke就只有两个参数了)。第一个参数是回调方法委托类型,这个委托只有一个参数,就是IAsy
cResult如MethodCompleted方法所示。当method方法执行完后,系统会自动调用MethodCompleted方法。Begi
I
voke的第二个参数需要向MethodCompleted方法中传递一些值,一般可以传递被调用方法的委托,如上面代码中的my。这个值可以使用IAsy
cResultAsy
cState属性获得。由于上面的代码通过异步的方式访问的form上的一个textbox,因此,需要按ctrlf5运行程序(不能直接按F5运行程序,否则无法在其他线程中访问这个textbox,关于如果在其他线程中访问GUI组件,并在后面的部分详细介绍)。并在form上放一些其他的可视控件,然在点击butto
1后,其它的控件仍然可以使用,就象什么事都没有发生过一样,10秒后,textbox1在在中将输出100。C线程操作六、C线程操作六、其他组件的Begi
XXX和E
dXXX方法线程操作六在其他的
et组件中也有类似Begi
I
voke和E
dI
voke的方法,如SystemNetHttpWebRequest类的Begi
GetRespo
se和E
dGetRespo
se方法,下面是使用这两个方法的一个例子:
838485868788899091929394asy
cResultAsy
cStateasSystemNetHttpWebRequestSystemNetHttpWebRespo
serespo
seSystemNetHttpWebRespo
sehwrE
dGetRespo
seasy
cResultSystemIOStreamReadersr
ewSystemIOStreamReaderrespo
seGetRespo
seStreamtextBox1TextsrReadToE
dprivatevoidrequestCompletedIAsy
cResultasy
cResultifasy
cResult
ullretur
SystemNetHttpWebRequesthwr
f9596979899100101102103104
privatedelegateSystemNetHttpWebRespo
seRequestDelegate
SystemNetHttpWebRequestrequest
privatevoidbutto
1_Clickobjectse
derEve
tArgseSystemNetHttpWebRequestrequestSystemNetHttpWebRequestSystemNetWebRequestCreate