DbDataSourceEnumerator.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //------------------------------------------------------------------------------
  2. // <copyright file="DbDataSourceEnumerator.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">Microsoft</owner>
  6. // <owner current="true" primary="false">Microsoft</owner>
  7. //------------------------------------------------------------------------------
  8. namespace System.Data.Common {
  9. using System;
  10. using System.Collections;
  11. using System.ComponentModel;
  12. using System.Data;
  13. using System.Diagnostics;
  14. using System.Threading;
  15. public abstract class DbDataSourceEnumerator { // V1.2.3300
  16. protected DbDataSourceEnumerator() { // V1.2.3300
  17. }
  18. abstract public DataTable GetDataSources(); // V1.2.3300
  19. /*
  20. virtual public IAsyncResult BeginGetDataSources(AsyncCallback callback, object asyncStateObject) { // V1.2.3300
  21. DbEnumSynchronousAsyncResult asyncResult = new DbEnumSynchronousAsyncResult(callback, asyncStateObject);
  22. try {
  23. asyncResult._dataTable = GetElements();
  24. asyncResult.SetCompletedSynchronously();
  25. }
  26. catch(DataAdapterException e) {
  27. ADP.TraceExceptionForCapture(e);
  28. asyncResult.ExceptionObject = e;
  29. }
  30. if (null == asyncResult._dataTable) {
  31. throw ADP.DataAdapter("no datatable");
  32. }
  33. if (null != callback) {
  34. callback(asyncResult);
  35. }
  36. return asyncResult;
  37. }
  38. virtual public DataTable EndGetDataSources(IAsyncResult asyncResult) { // V1.2.3300
  39. ADP.CheckArgumentNull(asyncResult, "asyncResult");
  40. DbEnumSynchronousAsyncResult ar = (asyncResult as DbEnumSynchronousAsyncResult);
  41. if (ar._endXxxCalled) {
  42. throw ADP.InvalidOperation("EndGetElements called twice");
  43. }
  44. ar._endXxxCalled = true;
  45. if (null != ar.ExceptionObject) {
  46. throw ar.ExceptionObject;
  47. }
  48. return ar._dataTable;
  49. }
  50. sealed private class DbEnumSynchronousAsyncResult : DbAsyncResult {
  51. internal bool _endXxxCalled;
  52. internal DataTable _dataTable;
  53. internal DbEnumSynchronousAsyncResult(AsyncCallback callback, Object asyncStateObject) : base(null, callback, asyncStateObject) {
  54. }
  55. }
  56. */
  57. }
  58. }