2012-03-11 13 views

答えて

1

マルチスレッドアプリケーションになります。 各スレッド(ワーカー)がソース(usbビデオ)から宛先(ファイルストリーム)まで記録します。私はそれはあなたの基本的な考え方を与える願っていますが、この(擬似C#の)のような何かを行うことができ

...

class Worker 
{ 
    bool _record; 
    ISource _source; 
    IDestination _dest; 

    public Worker(ISource source, IDestination dest) 
    { 
     _source = source; 
     _dest = dest; 
    } 

    public void Record() 
    { 
     lock(this) 
      _record = true; 
     pos = 0; 
     while(_record) 
     { 
      var buffer = new byte[4096]; 
      len = _source.Read(pos, buffer); 
      pos += len; 
      dest.Write(buffer, len); 
     } 
    } 

    public void Stop() 
    { 
     lock (this) 
      _record = false; 
    } 
} 

class Program 
{ 
    public static Main() 
    { 
     var w1 = new Worker(new UsbVideo(), new FileDestination()); 
     Thread.Start(w1.Record); 

     ... 

     Console.Readline(); 
     w1.Stop(); 
    } 
} 
関連する問題