C++ cli c++/cli多线程套接字和窗体

C++ cli c++/cli多线程套接字和窗体,c++-cli,C++ Cli,有谁能给我指出正确的方向吗?我似乎在网络上徒劳地循环 private: System::Void loginButton_Click(System::Object^ sender, System::EventArgs^ e) { mLogin* lgn; string text = marshal_as<string>(subjectName->Text); if (lgn->login(

有谁能给我指出正确的方向吗?我似乎在网络上徒劳地循环

private: System::Void loginButton_Click(System::Object^  sender, System::EventArgs^  e) {
             mLogin* lgn;
             string text = marshal_as<string>(subjectName->Text);

             if (lgn->login(&text) == "Master")
             {
                 delete this;
                 mSockServ server;
                 vMaster master;
                 Thread^ newThread = gcnew Thread(gcnew ThreadStart(master, &vMaster::ShowDialog));
                 newThread->Start();

                 //master.ShowDialog();
                 server.sockInit();
             }
             else if (lgn->login(&text) == "Slave")
             {
                 delete this;
                 vSlave slave;
                 mSockClnt client;
                 Thread^ newThread = gcnew Thread(gcnew ThreadStart(client, &mSockClnt::sockInit));
                 newThread->Start();
                 //client.sockInit(text);
                 slave.ShowDialog();
             }
             else if (lgn->login(&text) == "No")
             {
                MessageBox::Show("Not a valid username or password");
             }
         }
private:System::Void login按钮\u单击(系统::对象^sender,系统::事件参数^e){
mLogin*lgn;
字符串text=marshal_as(subjectName->text);
如果(lgn->登录(&text)=“主控”)
{
删除此项;
mSockServ服务器;
vMaster master;
线程^newThread=gcnewthread(gcnewthreadstart(master,&vMaster::ShowDialog));
newThread->Start();
//master.ShowDialog();
sockInit();
}
如果(lgn->login(&text)=“Slave”),则为else
{
删除此项;
奴隶;
mSockClnt客户端;
线程^newThread=gcnewthread(gcnewthreadstart(客户端,&mSockClnt::sockInit));
newThread->Start();
//client.sockInit(文本);
slave.ShowDialog();
}
如果(lgn->登录(&text)=“否”,则为“否”)
{
MessageBox::Show(“不是有效的用户名或密码”);
}
}
我只想在一个新线程中启动一个新表单,这样它就可以与一个socket服务器或客户端并发运行,我也希望在一个新线程中启动它。我似乎无法启动套接字或窗体,这是我的错误:

错误1错误C3352:“ShowDialog”:指定的函数与委托类型“void(void)”不匹配

错误2错误C3352:“void mSockClnt::sockInit(std::string)”:指定的函数与委托类型“void(void)”不匹配

虽然我确定sockInit的类型是void


谢谢。

只需添加两个方法。如果我不通过线程或其他方式将套接字与表单分离,那么其中一个方法只需等待另一个。