0

新しいスレッドを作成し、パラメーターをスレッド化された関数に送信する必要がありますが、機能させることはできません。私はこの参照に従って作業していました: http://msdn.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx

これがスレッドの作成です(コメントにエラーがあります):

System::Threading::Thread^ T = gcnew System::Threading::Thread(gcnew System::Threading::ParameterizedThreadStart(this, &Server::ClientHandler)); // ERROR: 'void Server::ClientHandler(System::Object ^,System::Object ^)' : the specified function does not match the delegate type 'void (System::Object ^)'
T->Start(ClientSocket); // ERROR: 'System::Threading::Thread::Start' : no overloaded function takes 2 arguments

ここにClientHandler宣言があります:

void Server::ClientHandler(Object^ data, Object^ data1);

パラメータを 1 つだけ指定して試してみましたが、2 つ目のエラーしかありませんでした。

PS、関数では、パラメーターをandClientHandlerに変換する必要があります。どうすればよいですか?Object^SOCKET*SOCKADDR_IN*

私の試み:

SOCKET* _Sock = (SOCKET*)data;
SOCKADDR_IN* _ADDR = (SOCKADDR_IN*)data1;

Visual Studio 2012 を使用しています。

4

1 に答える 1

2

の宣言Server::ClientHandlerが間違っていることを確認してください。

次のようにする必要があります。

void Server::ClientHandler(Object^ data)
{
    //Do stuff with data here..
}

System::Threading::Thread^ T = gcnew System::Threading::Thread(gcnew System::Threading::ParameterizedThreadStart(this, &Server::ClientHandler));
T->Start("Pass Your Data Here");
于 2013-09-16T20:55:28.393 に答える