|
我们经常会遇到:
1:客户购买了5个用户的许可,10个用户的许可,软件需要限制用户的并发数量,我知道就是Oracle的并发用户达到20个以上,那费用是非常昂贵的。
2:一个用户只能登录一次或者是一个账号在同一时间只能登录一个,若已经是登录了就不让再登录了,需要能控制用户的并发登录问题。
3:有的系统也需要能实现在线用户列表、用户的登录状态等,特别是即时消息功能的内部管理系统等。
先把自己的思路整理图贴出来如下:
C/S的部分参考代码如下:这里为了实现定时获取消息的平滑,利用了线程的方式,这样不影响用户的操作,是多线程实现定时获取消息的。
/// <summary>
/// 消息检测的线程
/// </summary>
private Thread MessageThread = null;
this.MessageThread = new Thread(new ThreadStart(this.MessageCheck));
MessageThread.Start();
private void MessageCheck()
{
while (!this.ExitApplication)
{
if (this.FormLoaded && (!this.Busyness))
{
if (this.Tag == null)
{
// 获得新消息
// this.bwGetNewMessage.RunWorkerAsync();
this.GetNewMessage();
this.Tag = true;
}
else
{
// 若已经是最小化、或者被隐藏起来了,就不用获取在线状态,可以提高效率
if ((this.WindowState == FormWindowState.Minimized) || !(this.Visible))
{
// 阅读消息状态
// this.MessageChek();
}
// 获取在线状态列表
// this.bwGetOnLineState.RunWorkerAsync();
this.GetOnLineState();
this.Tag = null;
}
}
Thread.Sleep(1000);
}
}
NET技术:浅谈思路严谨的用户在线状态控制【附部分C#参考代码】,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。