按顺序处理登录事件的好方法
本文关键字:方法 事件 顺序处理 登录 | 更新日期: 2023-09-27 18:10:34
我有一个登录系统,需要:
- 连接。
- 等待连接完成。
- 发送登录请求。
- 等待此请求的响应
- 发送另一种请求。
- 等待此请求
- 继续!
知道网络堆栈是事件驱动的,这意味着当我接收数据时发送事件,当我连接时,等等,处理这种情况的好方法是什么?
我想知道我是否应该去异步方法或只有一个简单的循环?
是否采用异步很大程度上取决于您为用户提供的GUI类型。如果要在控制台应用程序中实现此功能,则没有必要使用它,因为控制台总是一次只做一件事。另一方面,如果您要为用户提供一个功能齐全的GUI,那么当应用程序试图连接时,GUI必须具有响应性,这一点非常重要。
除此之外,当您通过套接字处理网络和通信时,使用包头是一个好主意。也就是说,你应该先发送一个包头,告诉服务器你要发送登录请求,这样的头应该主要包含两个信息:1。接下来是什么样的数据包?以下数据包的长度是多少?同样的,服务器将首先响应包头。
异步是一个好主意,您应该尝试通过网络实现异步方法,以优雅地处理用户交互并使GUI响应更快。
如果您使用的是WPF 4.5,那么新的async/await结构将非常适合您的场景。
http://msdn.microsoft.com/en-gb/library/vstudio/hh191443.aspx可以通过在background
线程上调用synchronous methods
来保持GUI的响应性。
异步调用基本上是有用的,如果你计划给用户一个机会'Cancel'
它的请求[如果服务器响应太慢]
|----A-----| |-----B-----------| |-------C------|
异步:
|----A-----|
|-----B-----------|
|-------C------|
考虑到你需要在进入下一个步骤之前完成一个步骤,我认为异步方法不会给你任何显著的优势(除了取消请求的能力)
协程是一个很好的技巧
允许你循环遍历异步任务
c#中的协程