C# 如何在.NET4.0上的另一个线程上使用handler方法

C# 如何在.NET4.0上的另一个线程上使用handler方法,c#,multithreading,events,.net-4.0,C#,Multithreading,Events,.net 4.0,你好 我尝试在另一个线程上执行handler方法,但不知道如何执行 我的代码: OnMyEvent+=MyTestFunc; void MyTestFunc(Object sende,SomeClass c) { ... do work; } 请告诉我如何在另一个线程上执行MyTestFunc。对于fire and forget方法(不需要任何返回值)最简单的版本是使用: (使用。,因为状态对象将被传递,但您不需要它。)如果要对事件处理程序执行此操作: OnMyEvent += (x,

你好

我尝试在另一个线程上执行handler方法,但不知道如何执行

我的代码:

OnMyEvent+=MyTestFunc;


void MyTestFunc(Object sende,SomeClass c)
{
 ... do work;
}

请告诉我如何在另一个线程上执行MyTestFunc。

对于fire and forget方法(不需要任何返回值)最简单的版本是使用:

(使用
,因为状态对象将被传递,但您不需要它。)如果要对事件处理程序执行此操作:

OnMyEvent += (x, y) => {
  ThreadPool.QueueUsersWorkItem(_ => MyTestFunc(x, y));
};

注意,有更好的方法可以做到这一点,但对于简单的情况,保持简单。如果我有2和模式调用我的事件,会发生什么?它将创建2个线程?当handler mathod结束时-thread close是否应该关闭?@user2545071读取线程池的链接介绍:它根据需要上下伸缩。
OnMyEvent += (x, y) => {
  ThreadPool.QueueUsersWorkItem(_ => MyTestFunc(x, y));
};