DataSet のイベント処理

DataSet オブジェクトには、 DisposedInitializedMergeFailedという 3 つのイベントがあります。

MergeFailed イベント

DataSet オブジェクトのイベントの中で最も使用頻度が高いイベントは、マージしようとしている MergeFailedオブジェクトのスキーマが競合する場合に発生する DataSet です。 この状況は、ターゲットとソースの DataRow が同じ主キー値を持ち、なおかつ、 EnforceConstraints プロパティが trueに設定されている場合に発生します。 たとえば、マージ対象のテーブルの主キーの列が 2 つの DataSet オブジェクトのテーブル間で同じ場合、例外がスローされ、 MergeFailed イベントが発生します。 MergeFailedEventArgs イベントに渡される MergeFailed オブジェクトには、2 つの Conflict オブジェクト間のスキーマで発生した競合を示す DataSet プロパティ、および競合が発生したテーブルの名前を示す Table プロパティがあります。

次のコードは、 MergeFailed イベントのイベント ハンドラーを追加する方法を示しています。

AddHandler workDS.MergeFailed, New MergeFailedEventHandler( _  
  AddressOf DataSetMergeFailed)  
  
Private Shared Sub DataSetMergeFailed(  _  
  sender As Object,args As MergeFailedEventArgs)  
  Console.WriteLine("Merge failed for table " & args.Table.TableName)  
  Console.WriteLine("Conflict = " & args.Conflict)  
End Sub  
workDS.MergeFailed += new MergeFailedEventHandler(DataSetMergeFailed);  
  
private static void DataSetMergeFailed(  
  object sender, MergeFailedEventArgs args)  
{  
  Console.WriteLine("Merge failed for table " + args.Table.TableName);  
  Console.WriteLine("Conflict = " + args.Conflict);  
}  

Initialized イベント

Initialized イベントは、 DataSet のコンストラクターによって DataSetの新しいインスタンスが初期化された後に発生します。

IsInitialized プロパティは、 true の初期化が完了した場合に DataSet を返します。それ以外の場合は falseを返します。 この値は、 BeginInit の初期化を開始する DataSetメソッドによって IsInitializedfalseに設定されます。 また、 EndInit の初期化を終了する DataSetメソッドによって trueに設定されます。 これらのメソッドは、別のコンポーネントによって使用されている DataSet を初期化するために、Visual Studio のデザイン環境によって使用されます。 通常、コード内で直接使用することはありません。

Disposed イベント

DataSet は、 MarshalByValueComponent メソッドおよび Dispose イベントの両方を公開する Disposed クラスから派生しています。 Disposed イベントでは、コンポーネントが破棄されたことを伝えるイベントをリッスンするためのイベント ハンドラーが追加されます。 Dispose メソッドが呼び出されたときにコードを実行したい場合は、DataSetDisposed イベントを使用できます。 Dispose では、MarshalByValueComponent によって使用されたリソースが解放されます。

Note

DataSet オブジェクトと DataTable オブジェクトでは、MarshalByValueComponent が継承されていて、リモート処理用の ISerializable インターフェイスがサポートされています。 これらは、リモート処理ができる唯一の ADO.NET オブジェクトです。 詳しくは、「.NET リモート処理」をご覧ください。

DataSet を操作するときに使用できる他のイベントについては、「DataTable イベントの処理」および「DataAdapter のイベント処理」をご覧ください。

関連項目