0

MvvM / Prism / UnityとRemoteをデータソースとして使用して、すべてWPFでアプリケーションを作成しています。

Winフォームでは、数分後にアプリが真ん中かどうかを確認し、アイドル状態の場合はアプリをロックしてログイン画面を表示するという基本的なことが必要です。

グーグルで検索した後、DllImportを使用するソリューションと純粋なWpfメソッドを使用するソリューションを見つけました。

Wpfウェイを実装した後(plsは以下のコードを確認してください)、アプリにログインした後にのみ機能します。単純なtexboxを開いてクリックするか、検索を押すと、アイドルメソッドは起動されません。 、バックグラウンドで何かがハングしているように見えます。これにより、Wpfアイドルルーチンは、そうでないときに何かを実行していると見なします。

may appに関連するメモリ内にあるすべてのサービス/メソッドなどを確認するにはどうすればよいですか?コールスタックは私にはあまり表示されません。リモートサービスを正しい方法で呼び出していないか、小道具の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;
}
4

1 に答える 1

1

アイドル時間を見つけるデフォルトのウィンドウイベントがあります...wpfまたは他のアプリケーションに同じイベントを使用するのが賢明だと思います...

次のリンクは、それを実装するのに役立ちます。

Application.IdleイベントがWPFアプリケーションで発生しない

于 2012-01-13T12:47:09.260 に答える