C# 如何在新线程中构造类?

C# 如何在新线程中构造类?,c#,multithreading,.net-4.0,console,C#,Multithreading,.net 4.0,Console,如何在新线程中构造类?我有一个名为Server的静态类和一个名为ClientHandler的非静态类。我想在新线程中运行新ClientHandler实例的构造函数。构造函数接受2个参数。我尝试了多种方法,但进程的线程数没有增加。下面是一段代码片段: public static class Server { //... public static void AcceptConnection(IAsyncResult iar) { var oldserver

如何在新线程中构造类?我有一个名为Server的静态类和一个名为ClientHandler的非静态类。我想在新线程中运行新ClientHandler实例的构造函数。构造函数接受2个参数。我尝试了多种方法,但进程的线程数没有增加。下面是一段代码片段:

public static class Server
{
    //...

    public static void AcceptConnection(IAsyncResult iar)
    {
        var oldserver = (Socket) iar.AsyncState;
        var client = oldserver.EndAccept(iar);
        Console.WriteLine("Client [{0}] connected from {1}.", CHandlerIndex, client.RemoteEndPoint.ToString());

        new ClientHandler(client, CHandlerIndex); //This has to run in a new thread.

        CHandlerIndex++;
        ServerSocket.BeginAccept(new AsyncCallback(AcceptConnection), ServerSocket);
    }
}

public class ClientHandler
{
    private readonly Socket _client;
    private readonly Parser _pParser;
    public Security S;
    public int ClientIndex;

    //...

    public ClientHandler(Socket cSocket, int cI)
    {
        _client = cSocket;
        InitSecurity();
        _pParser = new Parser(this);
        ClientIndex = cI;
    }

    //...
 }
好吧,类(对象)不会在特定的线程上运行。只有方法可以。在另一个线程上运行构造函数的请求看起来毫无意义。它不会影响其他方法在何处/如何运行

在您给出的代码中,新的ClientHandler实例看起来是无根的,即它可以被垃圾收集


ClientHandler还有其他方法吗?它们可能在另一个线程上运行

异步和线程不是同义词。如果您想要一个新线程,请显式地使用线程池、原始的“新线程(Threadstart…)”创建一个线程,或者查看使用新的任务并行库

我知道对象不会(在特定线程上)运行。我的问题是如何在另一个线程中运行新对象的构造函数。我的想法是为每个ClientHandler实例提供一个线程,用于它的所有方法(从构造函数开始)。是的,ClientHandler还有其他方法。(发送、接收、InitSecurity等)我认为您需要一些方法,而不是ctor,它在线程上运行处理/等待。处理/等待什么?线程还是套接字的函数?为什么说异步和线程不一样?我从来没有说过它们是。这不是我问题的直接答案。事实上,你有两个答案都告诉你自己创建线程。这里有一个教程。如果您的问题是构造函数变量,请在问题中更加明确。您不需要使用“ParameterizedThreadStart”并创建一个类来包装参数(对象数组就可以了)。