|
我們經常會遇到:
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#參考代碼】,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。