Bagikan melalui


Menerapkan Metode Pencarian dalam Komponen Alur Streaming Terkelola

Antarmuka IStream asli tidak menyediakan metode untuk memeriksa posisi aliran saat ini, sehingga mesin olahpesan menggunakan metode Pencarian berikut.

pStream->Seek(0, STREAM_SEEK_CUR, &pNewPosition);  

Metode ini tidak memindahkan penunjuk aliran; sebaliknya mengkueri posisi saat ini. Jadi, jika Anda menerapkan komponen alur yang berfungsi dengan aliran yang tidak dapat dipilih, Anda dapat menggunakan metode Stream.Seek seperti dalam contoh berikut.

Contoh

override public long Seek(long offset, SeekOrigin origin)  
{  
   long pos = -1;  
  
   switch(origin)  
   {  
      case SeekOrigin.Begin :  
         pos = offset;  
         break;  
      case SeekOrigin.Current :  
         pos = Position + offset;  
         break;  
      case SeekOrigin.End :  
         break;  
   }  
  
   // We generally disallow seeking of the stream  
   // However, in unmanaged code, many people use Seek(0,CURR) to retrieve    // the current position  
   // Special case (that is, if Seek does not change position, do not   
   // throw an exception)  
   if (pos==Position)  
   {  
      return pos;  
   }  
   else  
   {  
      throw new NotSupportedException("ForwardOnlyEventingReadStream does not support Seek()");  
   }  
}  

Lihat Juga

Mengembangkan Komponen Alur Kustom