Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Khắc phục: System.ArgumentOutOfRangeException xuất hiện không liên tục với ADO.NET

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:836874
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài viết này nói về các sản phẩm mà Microsoft không còn hỗ trợ nữa. Do đó, bài viết này được cung cấp "nguyên bản" và sẽ không được cập nhật.
TRIỆU CHỨNG
Trong một ADO.NET ứng dụng, bạn có thể không liên tục nhận được thông báo lỗi sau ngoại lệ:
System.ArgumentOutOfRangeException: Chỉ số là ra khỏi phạm vi. Phải được không âm và ít hơn kích thước của các bộ sưu tập.Tên tham số: chỉ số
NGUYÊN NHÂN
Bạn nhận được thông báo lỗi này nếu bạn tạo hoặc phá hủy các đối tượng liên quan đến tập dữ liệu (ví dụ như một DataView đối tượng) trong một bộ xử lý sự kiện cho một Số liệu đối tượng, hoặc trong một đối tượng mà liên kết với một Số liệu đối tượng. Ví dụ, lỗi này đã được sao chép trong một ứng dụng có chứa một điều khiển lưới tạo trẻ em DataView các đối tượng trong một ListChanged xử lý sự kiện cho lưới điện. Điều này cho phép nhà nước bên trong của các tiềm ẩn Số liệu đối tượng để thay đổi trong thao tác một nơi mà nó nên vẫn tĩnh.
GIẢI PHÁP
Một hotfix được hỗ trợ là bây giờ có sẵn từ Microsoft, nhưng nó chỉ là nhằm khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng cho hệ thống đang gặp vấn đề cụ thể này. Hotfix này có thể nhận được thử nghiệm bổ sung. Vì vậy, nếu bạn không bị ảnh hưởng bởi vấn đề này, chúng tôi đề nghị bạn đợi cho gói dịch vụ tiếp theo có chứa hotfix này.

Để giải quyết vấn đề này ngay lập tức, liên hệ với dịch vụ hỗ trợ sản phẩm Microsoft để có được các hotfix. Đối với một danh sách đầy đủ các dịch vụ hỗ trợ Microsoft sản phẩm điện thoại số và thông tin về chi phí hỗ trợ, ghé thăm Web site sau của Microsoft:Lưu ý Trong trường hợp đặc biệt, chi phí mà thường phải gánh chịu cho các cuộc gọi hỗ trợ có thể được hủy bỏ nếu chuyên viên hỗ trợ Microsoft xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Các chi phí hỗ trợ thông thường sẽ áp dụng để hỗ trợ thêm câu hỏi và vấn đề này không đủ điều kiện cho các Cập Nhật cụ thể trong câu hỏi.Phiên bản tiếng Anh của hotfix này có thuộc tính tệp (hoặc sau này) mà được liệt kê trong bảng sau. Ngày tháng và thời gian cho những tập tin được liệt kê theo giờ phối hợp quốc tế (UTC). Khi bạn xem chi tieát taäp tin, nó được chuyển đổi thành giờ cục bộ. Để biết sự khác nhau giữa UTC và local time, sử dụng các Múi giờ thẻ công cụ ngày và giờ trong Pa-nen điều khiển.
   Date         Time   Version            Size    File name   --------------------------------------------------------------   02-Mar-2004  18:39  1.1.4322.1007   1,294,336  System.data.dll                                             
CÁCH GIẢI QUYẾT KHÁC
Không tạo ra hoặc phá hủy các đối tượng liên quan đến tập dữ liệu (ví dụ như một DataView đối tượng) bên trong một bộ xử lý sự kiện cho một Số liệu đối tượng.
TÌNH TRẠNG
Microsoft đã xác nhận rằng đây là một vấn đề trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho" của bài viết này.
Ngăn xếp cuộc gọi cho ngoại lệ này phụ thuộc vào các chức năng của ứng dụng của bạn và là nguyên nhân chính xác sai. Sau đây là hai ví dụ mà đã xảy ra khi trẻ em DataView các đối tượng được tạo ra trong các ListChanged xử lý sự kiện cho một điều khiển:

Ví dụ gọi stack 1

System.Collections.ArrayList.get_Item(Int32 index)Sstem.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)System.Data.DataTable.SetNewRecord(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge)System.Data.DataRow.EndEdit()System.Data.DataRow.set_Item(DataColumn column, Object value)System.Data.DataRow.set_Item(String columnName, Object value)

Ví dụ gọi stack 2

System.Collections.ArrayList.get_Item(Int32 index)System.Data.DataTable.ResetIndexes()System.Data.Merger.MergeTable(DataTable src, DataTable dst)System.Data.Merger.MergeTableData(DataTable src)System.Data.Merger.MergeDataSet(DataSet source)System.Data.DataSet.Merge(DataSet dataSet, Boolean preserveChanges, MissingSchemaAction missingSchemaAction)

Lưu ý Đây là những ví dụ chỉ và không phải là những ngăn xếp cuộc gọi duy nhất có thể xảy ra với lỗi này.
THAM KHẢO
Để biết thêm chi tiết, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
824684Mô tả các thuật ngữ tiêu chuẩn được sử dụng để mô tả Cập nhật phần mềm Microsoft
Để biết thêm chi tiết về một ngoại lệ tương tự xảy ra với một phiên bản cũ của ADO.NET, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
332215Khắc phục: "System.ArgumentOutOfRangeException: chỉ mục ra khỏi phạm vi" lỗi xảy ra với SqlClient.SqlConnection.Open()
Chú ý Sửa chữa cho bài viết cơ sở kiến thức Microsoft 332215 đã được bao gồm trong các.NET Framework phiên bản 1.1.
indexoutofrangeexception sqlclient

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 836874 - Xem lại Lần cuối: 09/12/2011 08:26:00 - Bản sửa đổi: 3.0

Microsoft ADO.NET 1.1

  • kbhotfixserver kbqfe kbmt KB836874 KbMtvi
Phản hồi
ml>