Begininvoke执行顺序的有关问题

Begininvoke执行顺序的问题
多线程,如果以下这句话是在子线程里执行的,而go是public static变量的话,
public static int go = 0;

主线程{ 调用子线程  }

子线程{
//A语句
this.BeginInvoke(new Action(() =>
                        {
                            Go ++;  //B语句
                        }));
//C语句
执行顺序是ABC还是ACB
}

我的问题,在子线程里执行顺序是ACB还是ABC ???
------解决思路----------------------
答案是不一定的 begininvoke 是等调用线程空闲的时候 才会去调用他
Begininvoke执行顺序的有关问题
上面是一种情况 很直接 但是 下面的情况
Begininvoke执行顺序的有关问题
上面两段代码 运行效果 完全不一样
在第一段代码中 都是在Console 所以没有空余时间 直到线程完毕后 begininvoke 才有空余时间 所以一次性全部打印出来了
而第二段代码中有了 sleep 所以 当sleep的时候 线程就有空闲时间了 所以 begininvoke 得以有机会执行
所以 答案是不确定的 得看你的 A 和 C 是什么样子的语句 
如果你的 A 和 C 都是很占用cpu时间的 那么 begininvoke 就很难有机会去执行 或者说等cpu切换时间片的时候 就有机会去执行
如果你的 A 和 C 是不怎么占用 cpu 时间的 那么 它就有可能会有机会去执行