【发布时间】:2020-06-15 14:43:27
【问题描述】:
尝试通过 c# winform 线程化套接字。我不知道这段代码是否正常工作。如果没有,我想用线程处理套接字。寻求帮助。
有消息提示客户端和服务器已连接,但没有相互接收数据。我不知道是什么问题。
private void Login_box_Click(object sender, EventArgs e)
{
string email = textBox1.Text;
string pw = textBox2.Text;
Thread thread = new Thread(new ThreadStart(delegate ()
{
this.Invoke(new Action(() => socketLogin(email, pw)));
Thread.Sleep(1000);
}));
thread.Start();
}
private void socketLogin(string email, string pw)
{
var loginjson = new JObject();
loginjson.Add("email", email);
loginjson.Add("password", pw);
var socket = IO.Socket("http://localhost:3000/login.html");
socket.On(Socket.EVENT_CONNECT, (data) =>
{
socket.Emit("socketlogin", loginjson.ToString());
});
socket.On("login", (data) => {
MessageBox.Show(data.ToString());
});
}
服务器节点.js
io.on('connection', function(socket) {
console.log('connection');
socket.on('socketlogin', function(data) {
var testLogin = { 'Login': "success" };
socket.emit('login', data);
});
});
【问题讨论】:
-
1) 生成一个显式线程,该线程只是将线程编组(通过
Invokexxx)返回到 UI 没有任何意义 2) 如果您必须调用使用BeginInvoke,因为Invoke可能导致应用程序死锁 3)Sleeping 在线程末尾没有任何作用。考虑使用async/await等价物 -
谢谢。但我不知道如何改变它。我可以请求更多帮助吗?
-
@jaebeom33 - 等待任务,年轻的学徒。
标签: c# node.js multithreading sockets