在 WF4.0 (vs2010) 中,关于并行结构的activity,我感觉有点奇怪,首先我可以确定是并行的,但是明明是并行的,为什么线程的ID是一样的呢?开始的时间和结束的时间相差5秒,这5秒是我在左边故意加了个delay造成的,这让我很疑惑。请高手解答。c#线程工作流

解决方案 »

  1.   

    就算是用delegate的异步调用,也没道理 thread ID 会一样啊。
    下面的代码很明确的说明了,当delegate同步调用的时候,才一样,如果是异步调用的话,thread ID肯定是不一样的using System;
    using System.Linq;
    using System.Activities;
    using System.Activities.Statements;
    using System.Threading;namespace WorkflowConsoleApplication1
    {
        class Program
        {
            delegate void Test();        static void Main(string[] args)
            {
                //WorkflowInvoker.Invoke(new Workflow1());            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);            Program p = new Program();
                Test t = new Test(p.ForDelegate);            t();            t.BeginInvoke(null, null);
            }        private void ForDelegate()
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
            }
        }
    }
      

  2.   


    一语惊醒梦中人, 受教了!
    这应该是在其内部指定了CPU的编号,或类似这样的行为
      

  3.   

    或者是 .net 4.0 自带的并行计算的类来实现的