为什么我不能在线程池中启动线程?

时间:2015-02-15 13:09:50

标签: c# multithreading threadpool

我刚刚创建了线程的功能:

static void ThreadMethod {}

试试这个:

ThreadPool.QueueUserWorkItem(ThreadMethod);

QueueUserWorkItem请求WaitCallback对象。

这只是我书中的例子,看起来它必须以这种方式运作。我错过了什么?

1 个答案:

答案 0 :(得分:3)

我认为这是一个错字

不是:

static void ThreadMethod {}

但是:

static void ThreadMethod(object sender) {//Method stuff go here}

并称之为,

ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod));

传递给线程的工作最小案例+参数

using System;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            paras myvalues = new paras();

            myvalues.para1 = 10;
            myvalues.para2 = 20;

            ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadMethod),myvalues);


            Console.ReadKey();
        }

        static void ThreadMethod(object state)
        {
            paras vals =(paras) state;

            Console.WriteLine(vals.para1);
            Console.WriteLine(vals.para2);

        }

    }

    struct paras
    {
        int Para1;

        public int para1
        {
            get { return Para1; }
            set { Para1 = value; }
        }

        int Para2;

        public int para2
        {
            get { return Para2; }
            set { Para2 = value; }
        }
    }
}