2011-08-16 22 views
0

Windowsサービスでmplayerとfilewatcherを使用してスナップショットを作成しようとしています。私はサービスを作成し、スナップショットを作成するコマンドラインのmplayerを取得することができましたが、問題が発生しました。ある種のキューを作成して、mplayerプロセスを一度に実行しIOをフラッディングさせないようにする必要があります。私はSynchronizedCollectionの作成を試行しましたが、ファイルがキューに入っているかどうかをチェックしてスナップショットを作成するための新しいスレッドを生成する制御プロセスをどこから開始するべきかを理解するのに問題があります。WindowsサービスでFilewatcherを使用してコマンドラインプロセスを制御する

答えて

0

もう少し前に何かを実装しなければなりませんでしたが、ここでは基本的なコードサンプルがあります。 フルクラスHereが見つかります。ここで

はあなたが何をする必要があるかの基本は、あなたがキューを必要とする

、ある、あなたはあなたのキューを格納するための任意のリストデータ構造を使用することができ、あなたはこのキューに新しいアイテムを追加するには、ファイルウォッチャーが必要です。

このようなキューを処理する別の方法が必要です。また、あなたのファイルウォッチャ意志は、それが実行されていない場合ProcessQeueue()をトリガーすることを確認するために、それを把握するのに十分な簡単されなければならない必要

private void ProcessQueue() 
    { 
     do 
     { 
       try 
       { 
        Itme job = null; 

        lock (Queue) 
        { 
         if (Queue.Count != 0) 
         { 
          job = Queue.First(); 
          Queue.Remove(job); 
         } 
        } 

        if (job != null) 
        { 
         Execute(job); 
        } 

       } 
       catch (Exception e) 
       { 
        Logger.FatalException("An error has occurred while processing queued job.", e); 
       } 


     } while (Queue.Count != 0); 

     Logger.Trace("Finished processing jobs in the queue."); 

     return; 
    } 

(キューが空になるまで、このキュー内の項目を処理します)設定したフラグ変数を使用することも、プロセスインスタンスがある場合は、そのプロセスインスタンスの状態をチェックすることもできます。

関連する問題