关于Winfrom的异步登录
来源:互联网 发布:单片机元器件清单 编辑:程序博客网 时间:2024/04/30 04:35
开门见山。最近遇到一个需求,一个winform程序,后台管理用的,有账号登录验证。在用户登录窗口点击登录按钮后,由于需要连接到远程服务器进行验证,因为网络问题有时候要等很长时间,这个时候用户就难受了,登陆界面一直在等待访问结果,所以经常性的一直卡在那里不动。好了,工作开始,着手解决这个问题。
我们知道,在Web编程中这种情况是很常见的,最通用的就是使用AJAX去处理,效果很好。但是在CS中我们应该如何去做呢? 多线程。这是最容易想到的方法,我也是用这个方法去解决的。
这里我使用了一个异步委托。利用BeginInvoke方法实现异步的调用。
第一步 ,定义一个登录操作的委托
delegate int LoginDelegate();
第二步,写两个方法,LoginBegin和LoginEnd,顾名思义,前者是登录验证的方法,就是我们前面所说的执行时间可能较长的代码段,后者就是Begin方法执行完毕后做的事情
/// <summary>
/// 登录请求开始
/// </summary>
/// <returns></returns>
int LoginBegin()
{
//这里写上你的登录方法
return 1;//如果成功就返回个1
}
/// <summary>
/// 登录请求结束
/// </summary>
/// <param name="result"></param>
void LoginEnd(IAsyncResult result)
{
AsyncResult asyncResult = (AsyncResult)result;
LoginDelegate login = (LoginDelegate)asyncResult.AsyncDelegate;
int loginresult = login.EndInvoke(result);
if(loginresult==1)
//成功了
else
//失败了
}
看到这里大家也许有点疑惑,IAsyncResult是哪里来的?下面就来说它
第三步,在点击登录按钮后执行委托(new LoginDelegate(LoginBegin)).BeginInvoke(LoginEnd, null);
这里是通过异步委托去调用了Begin方法,并且在Begin之行结束后调用End方法,刚刚的IAsyncResult其实就是Begin方法返回的值。
好了,简单三步,你就可以完成一个用户体验翻倍的登录。
- 关于Winfrom的异步登录
- C# 关于winFrom控制网页的自动登录的问题(网页刷屏器的制作原理)
- 关于数据库连接和在WINFROM下做用户登录
- Winfrom异步更新UI
- 关于Winfrom的DataGrid/DataGridView 操作
- Winfrom 登录窗体
- 关于WinFrom 中 label背景透明的那点事
- 关于C#winfrom连接数据库的方法及解释
- 关于winfrom界面加载的学习和思考
- 关于异步的思考
- 关于异步的理解
- 关于异步的思考
- 关于异步的理解
- Winfrom自己做类似QQ登录界面一样的关闭按钮效果
- 异步登录
- 异步登录
- winfrom treeview的绑定
- winfrom树的使用
- 柘荣哪里找小妞姐
- 数据库的增删改查 →创建sqlite数据库
- mina
- JavaLearning:异常
- Jedis使用示例
- 关于Winfrom的异步登录
- iOS开发常用的第三方类库
- 二、SQL语句映射文件(1)resultMap
- JBPM4 常用表结构
- XDM标准XDM_BufDesc数据结构定义
- 用Spring提高java观察者模式灵活性
- RedHat Linux9下用bootsplash制作全图形启动界面
- 基于dedecms 递归
- deeplearning 相关网址~