新しいスレッドでクラスを作成する方法は?私は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;
}
//...
}
どうしてAsyncとThreadedが同じではないのですか?私は彼らが言ったことはありません。 – lesderid
これは私の質問に直接答えはありません。 – lesderid
実際には、スレッドを自分で作成するという2つの答えがあります。ここにチュートリアルがあります。 http://msdn.microsoft.com/en-us/library/aa645740(v=vs.71).aspx。あなたの問題がコンストラクタ変数の場合は、あなたの質問にもっと明示的に記述してください。あなたは "ParameterizedThreadStart"を使用する必要はありませんし、あなたのパラメータをラップするクラスを作成する(オブジェクトの配列が行います)。 http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx – Doobi