110,534
社区成员
发帖
与我相关
我的任务
分享
public class A
{
public event Action testCompleted;
public void test()
{
//
}
}
你说这个是同步地回调了事件还是异步触发了事件呢?
那么我可能写public class A
{
public event Action testCompleted;
public void test()
{
if (testCompleted != null)
if (DateTime.Now.Ticks % 2 == 0)
testCompleted();
else
ThreadPool.QueueUserWorkItem(h => testCompleted());
}
}
这里,既可能在调用 test 方法的当前线程立刻同步回调,也可能先让 test 方法执行完,在系统线程池中注册任务来回调事件方法。
从形式上看,事件回调的形式就是异步的,非常适合异步多线程编程。但是我实现 test 方法的内部可能是同步的、可能是异步的,说不定。这也正好说明了回调形式具有很好的流程设计表现力,可以不管内部实现是同步还是异步。