저는 응용 프로그램을 모두 MvvM/Prism/Unity 및 Remote를 데이터 소스로 사용하여 WPF에서 수행했습니다.DispatcherTimer를 사용하여 유휴 시간 - 작동하지 않습니다.
나는 win 폼에서 정말 쉽다. 앱이 몇 분 후에 iddle인지 확인하고 유휴 상태이면 앱을 잠그고 로그인 화면을 표시한다.
Google에서 검색 한 후 DllImport를 사용하는 솔루션과 순수 Wpf 메서드를 사용하는 솔루션을 발견했습니다.
Wpf 방식 (pls 아래 코드 확인)을 구현 한 후에 앱에 로그인 한 후에 만 작동합니다. 간단한 texbox를 클릭하거나 검색을 클릭하면 유휴 상태가됩니다. 방법은 해고되지 않습니다, 거기에 무언가를 할 때 Wpf 유휴 루틴을 만드는 배경에 교수형 뭔가가있는 것처럼 보입니다.
어떻게하면 응용 프로그램과 관련된 메모리에있는 모든 서비스/방법/등을 확인할 수 있습니까? 콜 스택은 나에게 많은 것을 보여주지 못한다. 나는 그것을 affraid 또는 올바른 방법으로 원격 서비스를 호출하거나 내가 PropChanged 이벤트/observablecollections/등등에 뭔가 잘못 구현되지 오전 ...
100 % Wpf 구조를 사용하여 이것을하는 더 좋은 방법이 있습니까 ?
private void CheckIdleTime()
{
handler = delegate
{
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(5);
timer.Tick += delegate
{
if (timer != null)
{
timer.Stop();
timer = null;
System.Windows.Interop.ComponentDispatcher.ThreadIdle -= handler;
Console.WriteLine("IDLE! Lets logoff!");
this.LockApplication();
Console.WriteLine("logoff fired");
System.Windows.Interop.ComponentDispatcher.ThreadIdle += handler;
}
};
timer.Start();
Dispatcher.CurrentDispatcher.Hooks.OperationPosted += delegate
{
if (timer != null)
{
timer.Stop();
timer = null;
}
};
};
ComponentDispatcher.ThreadIdle += handler;
}
감사 월, 내 주요 문제는 내가 올바른 방법을 사용하면 내 응용 프로그램에서 뭔가 내가 그렇게 메모리에 갇혀 일부 개체를 만드는 올바른 방법으로 해제/소모하고 있지 않다이다 backgroun에서 실행중인 것이 있는지 확인하십시오. d는 FALSE 일 때 TRUE를 리턴합니다. 나는 전통적인 ImportDll 루틴을 사용했고 잘 동작한다. 건배 – 2Fast4YouBR