我正在嘗試創建一個Kinect + WPF應用程序。 Kinect部分工作正常;現在我想創建一個方法來檢查頁面是否空閒(沒有用戶正在與程序進行特定的時間交互)。如果它閒置5秒鐘,屏幕將被鎖定。這是算法:線程調度程序在WPF中睡眠
- 啓動線程(我需要使用調度程序作爲線程需要修改WPF元素),如果用戶使用的是
- 檢查。如果不是,則通過1
- 增加計數如果Count == 9(這意味着已5秒過去了),鎖定屏幕,並設置再次計數爲0。
- 睡眠500毫秒。
- 重複步驟2-4
這是我的代碼。當應用程序啓動時,會調用「startLockHandler」方法。
public void startLockHandler()
{
Application.Current.Dispatcher.BeginInvoke(new ThreadStart(() => lockHandler()), null);
}
public void lockHandler()
{
while (true)
{
if (myState.isSkeletonTracked == false) //if skeleton is no longer tracked
{
if (myState.ActionAllowed == true) //if the page is not in transition
{
lockCount++;
if (lockCount >= 10)
{
lockCount = 0;
myState.ActionAllowed = false;
//LOCKING MECHANISM INSERTED HERE. NEED TO MODIFY SOME WPF ELEMENTS
myState.ActionAllowed = true;
}
}
}
else
{
lockCount = 0;
}
Console.WriteLine("lockHandler: THREAD SLEEP CALLED");
Thread.Sleep (500);
}//end while
}//end method lockHandler
當我運行應用程序時,應用程序在啓動後立即掛起。我認爲發生的是Thread.Sleep(500)指示主線程睡眠(如果我錯了,請糾正我)。我的問題是如何指定哪個線程進入睡眠狀態? 順便說一句,我不是在C#中的專家,並在線程:(
感謝您的關注新手,希望你能幫助我:)
它通常是一個壞主意(TM),以在生產代碼 – 2011-12-18 05:58:53
睡覺我不能認爲任何其它溶液.. – user1055010 2011-12-18 06:30:51
爲什麼不使用'Timer'而不是'Thread.Sleep'? – ebb 2011-12-18 09:23:22