摘要:
Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行Control.Invoke 方法 (Delegate):在拥有此控件的基础窗口句柄的线程上执行指定的委托。Control.BeginInvoke 方法 (Delegate):在创建控件的基础句柄所在线程上异步执行指定委托。近日,被Control的Invoke和BeginInvoke搞的头大,就查了些相关的资料,整理如下。感谢这篇文章对我的理解Invoke和BeginInvoke的真正含义。(一)C 阅读全文
posted @ 2013-05-29 09:53
于为
阅读(235)
评论(0)
推荐(0)
摘要:
前几篇文章我已经对异步的操作进行的详细的解释.异步操作也是线程的一种,当我们开始一个异步操作(新线程),完成调用后需要和其他线程通信(可能需要告知状态信息),这时候我们就需要线程间的通信编程.线程间通信我们看下面的图图1我们来看线程间通信的原理:线程(Thread B)和线程(Thread A)通信,首先线程A必须实现同步上下文对象(Synchronization Context),线程B通过调用线程A的同步上下文对象来访问线程A,所有实现都是在同步上下文中完成的.线程B有两种方式来实现线程间的通信.第一种:调用线程A的同步上下文对象,阻碍当前线程,执行红色箭头调用,直到黄色箭头返回(同步上下 阅读全文
posted @ 2013-05-29 09:47
于为
阅读(527)
评论(0)
推荐(0)
摘要:
在前面3篇文章,我已经介绍了异步的工作原理和相关方法和参数的应用.下面我们介绍Stream流的操作,并使用System.IO.FileStream来揭开如何开发异步的Stream(System.IO.Stream)读/写操作异步的Stream读/写操作下面是继承于System.IO.Stream的类System.IO.StreamMicrosoft.JScript.COMCharStreamSystem.IO.BufferedStreamSystem.IO.FileStreamSystem.IO.MemoryStreamSystem.IO.UnmanagedMemoryStreamSystem 阅读全文
posted @ 2013-05-29 09:46
于为
阅读(544)
评论(0)
推荐(0)
摘要:
异步的核心: IAsyncResultAsynchronousProgrammingModel整个异步调用过程中都是围绕IAsyncResult来进行的,大家可以看看上篇文章的例子,BeginXXX返回这个对象,EndXXX接收这个对象来结束当前异步对象,下面我们来看看IAsyncResult接口成员/和实现此接口的AsyncResult类成员(其中有些在上篇中已经涉及到)IAsyncResult接口1publicinterfaceIAsyncResult2{3WaitHandleAsyncWaitHandle{get;}//阻塞一个线程,直到一个或多个同步对象接收到信号4BooleanIsC 阅读全文
posted @ 2013-05-29 09:44
于为
阅读(232)
评论(0)
推荐(0)
摘要:
我们怎样进行异步编程/开发?现在扩充下上篇文章的类(AsyncTest),提供更多的例子并从中做下简单的对比,从新的认识下异步的内部机制,下面我们增加一个新的委托1步,我们添加一个新方法(计算年薪YearlySalary)publicdecimalYearlySalary(decimalsalary,intmonthCount,decimalbonus);2步,为这个方法增加异步的功能,这样我们仍然使用委托(Delegate)publicdelegatedecimalSalaryEventHandler(decimalsalary,intmonthCount,decimalbonus);经过简 阅读全文
posted @ 2013-05-29 09:43
于为
阅读(270)
评论(0)
推荐(0)
摘要:
什么是.Net异步机制呢?在解释这个话题前,我们先看看同步的程序,就是我们常用的Hello World程序.Code 1:1classProgram2{3staticvoidMain(string[]args)4{5//查看当前的线程ID,是否线程池里面的线程6Console.WriteLine("1,ThreadID:#{0},IsPoolThread?{1}",Thread.CurrentThread.ManagedThreadId,Thread.CurrentThread.IsThreadPoolThread);78AsyncTesttest=newAsyncTest 阅读全文
posted @ 2013-05-29 09:41
于为
阅读(287)
评论(0)
推荐(0)