【问题标题】:WP7 - sockets architecture - How managed the sockets connection? Threads?WP7 - 套接字架构 - 如何管理套接字连接?线程?
【发布时间】:2012-03-15 09:06:15
【问题描述】:

我必须实现与服务器的异步套接字连接以更新文本(如聊天)并在我的应用程序屏幕上显示此文本。

我已经看到了一些关于如何实现这种套接字的示例,这不是一项艰巨的任务……但我正在寻找改进我的程序。

我在想,也许我需要在后台管理连接,但我不知道如何执行此任务...这是个好主意吗?在一个线程中管理 UI,在另一个线程中管理连接???

如果有人能指导我处理这类任务?

谢谢。

【问题讨论】:

    标签: multithreading sockets windows-phone-7 user-interface connection


    【解决方案1】:

    由于经典套接字 I/O 是阻塞的,您肯定需要将 I/O 代码移动到不同的线程中,否则您的 UI 线程将被阻塞并且无法接收用户输入。

    好的,所以你需要另一个线程。现在出现的问题是,如果某些输入来自套接字,则该线程本身无法更新 UI,因为只有 UI 线程可以这样做。为此,您需要调用 Dispatcher.BeginInvoke 将更新转发到 UI 线程。

    【讨论】:

    • 感谢您的信息,但您能建议我使用哪种线程来完成这项任务吗?我一直在听一些关于周期性任务和资源密集型任务的东西......我认为这种操作对于达到我的目标没有意义......另一方面,我一直在阅读一些关于实现任务的 3 种不同方式的东西在后台:System.Threading.Thread、System.ComponentModel.BackgroundWorker 和 System.Threading.ThreadPool.QueueUserWorkItem()...您能否提供有关在后台管理套接字的最佳方法的任何参考?谢谢
    • @Juan Pedro:对于从套接字无限期读取,我会使用System.Threading.Thread。线程池不适用于长时间运行的 I/O,BackgroundWorker 通常用于执行耗时的操作,如数据库操作或下载,并且可以报告进度,但通常不用于无限期等待套接字。
    • 感谢您的回答...让我再等一天再将此帖子设置为已解决。我想等待听听其他用户的意见。还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多