次の方法で共有


IDTSExternalMetadataColumnCollection100.GetEnumerator メソッド

IDTSExternalMetadataColumnCollection100 を繰り返し処理できる列挙子を返します。

名前空間:  Microsoft.SqlServer.Dts.Pipeline.Wrapper
アセンブリ:  Microsoft.SqlServer.DTSPipelineWrap (Microsoft.SqlServer.DTSPipelineWrap.dll)

構文

'宣言
Function GetEnumerator As IEnumerator
'使用
Dim instance As IDTSExternalMetadataColumnCollection100 
Dim returnValue As IEnumerator 

returnValue = instance.GetEnumerator()
IEnumerator GetEnumerator()
IEnumerator^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator
function GetEnumerator() : IEnumerator

戻り値

型: System.Collections.IEnumerator
外部メタデータ列コレクションを繰り返し処理できる System.Collections.Generic.IEnumerator です。

説明

列挙子は、コレクションのデータの読み取りのみを許可します。 列挙子を使用して、基になるコレクションを変更することはできません。

最初、列挙子はコレクションの先頭の要素の前に位置付けられます。 また、Reset メソッドは、列挙子を最初の位置に戻します。 この位置で Current を呼び出すと、例外がスローされます。 したがって、Current の値を読み取る前に、MoveNext を呼び出して、列挙子をコレクションの先頭の要素に進めておく必要があります。

Current は、MoveNext または Reset が呼び出されるまでは同じオブジェクトを返します。 MoveNext は、Current を次の要素に進めます。

列挙子は、コレクションの末尾を越えると、コレクションの最後の要素の後に位置付けられるので、MoveNext を呼び出すと false が返されます。 前回 MoveNext を呼び出して false が返された場合に、Current を呼び出すと例外がスローされます。 コレクションの先頭の要素に再び Current を設定するには、先に Reset を呼び出してから MoveNext を呼び出します。

列挙子は、コレクションが変更されない限り有効です。 要素の追加、変更、削除など、コレクションに変更が加えられた場合は、列挙子は無効になり回復できなくなります。そのため、次の MoveNext または Reset の呼び出しで InvalidOperationException がスローされます。 MoveNext を呼び出してから Current を呼び出すまでの間にコレクションが変更された場合、列挙子が既に無効になっていても、Current は、設定されている要素を返します。

列挙子はコレクションに排他アクセスできないため、コレクションの列挙処理は本質的にスレッド セーフな処理ではありません。 コレクションが同期されていても、他のスレッドがコレクションを変更する場合があり、このときは列挙子から例外がスローされます。 列挙処理中のスレッド セーフを確保するには、列挙処理の間を通してコレクションをロックするか、または他のスレッドによって加えられた変更に起因する例外をキャッチします。

関連項目

参照

IDTSExternalMetadataColumnCollection100 インターフェイス

Microsoft.SqlServer.Dts.Pipeline.Wrapper 名前空間