2009-08-01 30 views

答えて

4

自動(遅延)モードでサービスを使用することができますが、誰も速くログオンしていない場合はログオンする前に起動しますが、システムの大半が準備完了になるまで実行を避けたい場合は、 。準備が整うまで待ちたいと思っているユーザー中心のユーザーにとっては、ユーザー中心のトリガーを使用する必要があります。システムアカウントに関連付けられているプロセスの

  • CPUの負荷がもはやCPUのかなりの割合を取っていた。

    いくつかの指標は、あなたに、ユーザが使用するセッションの準備ができ見なさかどうかの良いアイデアを与えるだろうが存在します時間。

  • ユーザーがネットワーク接続は、これらはヒューリスティックなので、あなたが最小のためにいくつかの時間ベースの制約があり、最大可能なはずです

を確立している

  • UI(これ重要なマウスの動きやキーボード操作)との対話を開始しました彼らが失敗した場合に待ってください。

  • +0

    ありがとう、これは私が後にしたものです。私はパフォーマンスカウンターがこれを見始める場所かもしれないと思っています。システムは自動化されているため、監視するユーザーの操作はありませんが、ビットとボブの作業が終了したことを示す良い情報が必要です。掘り起こすだろう。 – PentaPenguin

    +0

    Ataris22 - 私はあなたが達成しようとしている究極の効果を知りたいと考えています。あなたのアプリケーションは、スタートアッププロセスで遅く(最後に)ロードされるように、何をしますか? – Matt

    +0

    @ShuggyCoUK私は、同様の状況に直面しています。違いは、デスクトップの高速切り替え中にデスクトップが準備できているかどうかを確認することです(Windows 8.1にログインしてユーザーを切り替え、同じユーザーに切り替え、すべてが整理される前にちらつきます)。その時点でデスクトップ上のすべてのロードが完了したことをどのように知ることができますか? – armanali

    0

    アプリケーションをstartup folderにインストールするだけです。また、ウィキペディアのページstartupを見てください。スタートアップフォルダread thisにC#アプリケーションをインストールするには

    +0

    アプリケーションの起動は問題ではありません。私のアプリケーションで実際に作業を開始する前に、他のすべてがロードされ、完了していることを確認しています。私はCPUの活動を監視する行に沿って考えていましたが、これを行うにはとても良い方法ではありません。 – PentaPenguin

    +0

    ** @ Ataris22:**一部の古いシステムでは常に約80%-100%の使用率で動作するため、CPUアクティビティの監視は機能しません。最後のリンクは、あなたがしたいことをする方法を説明しています。 – Kredns

    +0

    もう一度、私は苦労しているアプリケーションの開始ではありません。アプリケーションは、上記のリンクに記載されているレジストリキーを既に使用しています。質問は、Windowsデスクトップが完全に機能している状態にあることを最もよく伝える方法に関するものです。起動時に実行するように設定するのではなく、それだけで達成するものではありません。 – PentaPenguin

    2

    私は主に、インタラクティブなUIベースのアプリケーションであり、システムサービスではないと仮定しています。

    「終了」の定義が明確にされていないため、他のアプリケーションの読み込みが完了したことを知る方法はありません。ただし、http://www.chameleon-managers.com/windows-startup-manager/startup-delayer.phpなどのサードパーティのユーティリティを使用して、アプリケーションの起動順序を制御できます。

    他のデスクトップアプリケーションの読み込みが完了した後でアプリケーションを実行させることで、どのような効果を達成しようとしているのかがわかりました。これを知ることは、別の答えを示唆するのに役立つかもしれませんアプリケーションの負荷に

    よろしく

    1

    あなたはタイマーループに入り、すべての前提条件プロセスがプロセスリストをmoniteringによってロードされるまで待つことができませんでした。条件が満たされたら、アプリケーションの初期化を続けることができます。

    Process[] apps = Process.GetProcesses(); 
    
    +0

    あなたは良い点を確認します。あなたが何を待っているかを明示的に知っていれば、それをコード化することができます。 – Matt

    3

    非常に古い質問ですが、私は同じことが必要でした。次のコードは動作するようです:

     [DllImport("user32.dll", SetLastError = true)] 
         static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
    
         // wait until desktop ready 
    
         IntPtr lHwnd = IntPtr.Zero; 
         do 
         { 
          lHwnd = FindWindow("Shell_TrayWnd", null); 
          Thread.Sleep(100); 
         } while (lHwnd == IntPtr.Zero); 
    
    +0

    これはお金です。デスクトップがユーザー環境を準備している間にロードするまでに5分かかると、初めてのログインで発生したアプリケーションで実際にクラッシュしました。私はシステムトレーにもアクセスしていたので、これは実際にはダグが準備が整うまで待ちます。 – Ultratrunks

    関連する問題