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