大家帮我看看这段代码:
void method()
{
  file.BeginWrite(....,new AsyncCallback(filewritecallback),..)
}void filewriteback(IAsyncResult ar)
{
  ...
  file.EndWrite(ar);
  ...
}比如当主线程执行到mehtod的file.BeginWrite..这句时,生成了一个新的线程(比如:a1线程)来执行file.BeginWrite函数。我想问的是:
我想问一下是不是线程a1执行完了BeginWrite,然后又执行filewriteback回调方法;
还是说当a1线程执行完BeginWrite后,会再生成一个线程a2来执行filewriteback这个问题困扰好久了,大家帮帮忙 :)
谢谢

解决方案 »

  1.   

    不一定,这两种情况都有可能发生,因为用这种方法产生的线程属于线程池线程,当程序执行到BeginWrite时,如果线程池没有创建,则创建线程池,并且创建一个线程池线程(比如a1)执行这个函数,当执行完毕后执行回调filewriteback,这个回调选择线程池一个空闲的线程执行,当然这个空闲线程不一定就是a1,所以我认为这是不一定的,我提议你可以用程序跟踪一下程序执行前后线程池线程信息。如:
    void method()
    {
      记录线程池线程数量
      file.BeginWrite(....,new AsyncCallback(filewritecallback),..)
    }
    void filewriteback(IAsyncResult ar)
    {
      记录线程池线程数量
    当前执行线程的HASHCODE
    ...
      file.EndWrite(ar);
      ...
    }