时间:2019-05-10 标签:c#socketThread
Posted
技术标签:
【中文标题】时间:2019-05-10 标签:c#socketThread【英文标题】:c# socket Thread 【发布时间】: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) 生成一个显式线程,该线程只是将线程编组(通过Invoke
xxx)返回到 UI 没有任何意义 2) 如果您必须调用使用 BeginInvoke
,因为 Invoke
可能导致应用程序死锁 3) Sleep
ing 在线程末尾没有任何作用。考虑使用async/await
等价物
谢谢。但我不知道如何改变它。我可以请求更多帮助吗?
@jaebeom33 - 等待任务,年轻的学徒。
【参考方案1】:
我会做如下的事情:
private void Login_box_Click(object sender, EventArgs e)
string email = textBox1.Text;
string pw = textBox2.Text;
ThreadPool.QueueUserWorkItem(socketLogin, new Tuple<string, string>(email, pw));
private void socketLogin(object obj)
string email = ((Tuple<string, string>)obj).Item1;
string pw = ((Tuple<string, string>)obj).Item2;
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());
);
希望这会有所帮助!
【讨论】:
以上是关于时间:2019-05-10 标签:c#socketThread的主要内容,如果未能解决你的问题,请参考以下文章
时间:2019-05-10 标签:c#release optimizationunusedstring
时间:2019-05-10 标签:c#paypalrestapitransactionsearch
时间:2019-05-10 标签:c#socketThread
时间:2019-05-10 标签:c++threadeddbclassmemorymixup