为什么我不能在线程池中启动线程?
Why i can't start thread in thread pool?
我刚刚创建了线程函数:
static void ThreadMethod {}
然后试试这个:
ThreadPool.QueueUserWorkItem(ThreadMethod);
但是QueueUserWorkItem
请求WaitCallback
对象。
这只是我书中的示例,看起来它必须以这种方式工作。我错过了什么?
我认为这是一个错字
不是:
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; }
}
}
}
我刚刚创建了线程函数:
static void ThreadMethod {}
然后试试这个:
ThreadPool.QueueUserWorkItem(ThreadMethod);
但是QueueUserWorkItem
请求WaitCallback
对象。
这只是我书中的示例,看起来它必须以这种方式工作。我错过了什么?
我认为这是一个错字
不是:
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; }
}
}
}