2012-03-05 234 views
1

我有一個10-20人全天使用的程序。由於事情正在迅速波動,我偶爾需要將數據庫脫機,或者出於其他原因重新啓動服務器。我想有一個更好的方法來確保目前沒有人蔘與該計劃,而不是走向每個人並問他們。如何檢查某人是否正在運行我的程序?

我不想重新發明輪子,如果這樣的事情已經存在。

我所做的是在思考:

  • 創建數據庫「歷史」進入用戶每次打開或關閉程序,看看誰正在使用該系統。
  • 使用WCF讓客戶端「告訴」服務器每隔X秒連接一次。

有沒有更好或更容易解決這個問題的方法?

+0

它是什麼樣的「程序」,ASP.NET,WPF,Winforms,...? – 2012-03-05 22:52:45

+0

這是一個Winforms程序 – Origin 2012-03-05 23:01:52

+0

也許你的數據庫保留了當前登錄用戶的記錄,你可以查詢。其中一個系統表... – Dialecticus 2012-03-05 23:06:53

回答

0

一個解決方案是創建一個數據庫表,每次有人登錄時,都會爲他們創建一條記錄。每15分鐘更新一次上次更新時間。當它們關閉時,它會刪除記錄。如果任何記錄超過15分鐘,這是應用程序崩潰。

它的原始但它的工作原理,然後你有一個簡單的數據庫查詢運行。

+0

謝謝。這是我一直在考慮的選項 - 但不確定它是否被其他人視爲「黑客」。 – Origin 2012-03-05 22:58:00

+1

對不起,這對我來說確實是'hackish'... – Steve 2012-03-05 23:22:05

+0

感謝LongArm的迴應。不幸的是,所有抱怨你的答案有多糟糕的人都沒有發佈自己的答案。我決定使用諸如'net session','net file'和'netstat |之類的窗口函數找到「{portNumberOfSqlServer}」來找出當前連接到機器的人。 – Origin 2012-03-27 02:12:49

0

一種解決方案是通過網絡以UdpClient廣播一些數據並查找響應以查看應用程序的任何實例是否在線。

我不知道這種解決方案在您的情況下是否可行,但我認爲這個解決方案對於某些人來說至少可以派上用場。