【问题标题】:Not lock up the GUI on thread.sleep不在 thread.sleep 上锁定 GUI
【发布时间】:2014-03-19 21:52:55
【问题描述】:

我正在编写一个多用户服务器\客户端应用程序。

本质上,它将实现一个聊天室并允许用户相互交流。到目前为止,我已经让应用程序在服务器\客户端之间工作,方法是向服务器发送一个请求,服务器总是检查传入的网络连接,并立即响应。

但是,对于客户端从服务器接收聊天消息,我唯一能想到的就是在客户端上运行一个服务器。但是,如果我这样做,客户将冻结并且无法做任何事情。另外,客户端不是为打开端口连接到服务器而设计的。

在不导致客户端锁定的情况下等待来自服务器的数据到达客户端的最佳建议是什么?

谢谢!

(而且,我不是\专业\ c#程序员,更多的是业余爱好者,所以请不要给我很复杂的答案)

【问题讨论】:

  • 如果您想避免锁定 GUI,您将不得不在后台线程中完成这项工作,这可能比您希望的要困难一些。
  • Plus the client is not designed for opening ports to connect to the server - 那么它不是客户端。你的设计听起来好像走错了路。你能再解释一下你的设置吗?
  • 基本上,我需要客户端连接到服务器。服务器将允许端口转发,但我不希望客户端必须打开其端口才能与服务器一起使用。客户端(a)需要向服务端发送聊天,服务端需要响应客户端a、b、c有消息。
  • 这是一种将业余爱好者转变为专业 C# 程序员的项目。由于头发少了很多,编写异步代码并不是那么容易。很多google hits告诉你如何使用Socket类的BeginXxx方法,你真的不需要我们添加更多的hit。
  • @HansPassant 异步 IO 会将男孩变成男人,汉斯,我说对了吗?

标签: c# .net network-programming


【解决方案1】:

如果我是你,我会使用后台工作者或第二个线程。如果您不想这样做,可以使用thread.suspend

要开始一个新线程:

Using System.Threading;

Thread t = new Thread()
t.Start;

注意:不建议这样做。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2017-03-26
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2014-12-22
    相关资源
    最近更新 更多