2011-07-22 26 views
7

Mặc dù chủ đề đã được thảo luận ở đây trước đây, nhưng các giải pháp được đề xuất dường như không hoạt động ..CA2000: đối tượng không được xử lý dọc theo tất cả các đường dẫn ngoại lệ

Tôi có một phương pháp bấm-gọi-gọi trong ứng dụng biểu mẫu của tôi, cho thấy một hộp thoại thư mục chọn:

private void ButtonSelectReporterFolderClick(object sender, EventArgs e) 
{ 
    using (var dialog = new FolderBrowserDialog()) // causes warning 
    { 
     if (dialog.ShowDialog() == DialogResult.OK) 
     { 
      this.boxReporterFolderPath.Text = dialog.SelectedPath; 
     } 
    } 
} 

này tạo ra một cảnh báo:

CA2000: Microsoft.Reliability : In method 'MainWindow.ButtonSelectReporterFolderClick(object, EventArgs)', object '<>g__initLocal' is not disposed along all exception paths. Call System.IDisposable.Dispose on object '<>g__initLocal' before all references to it are out of scope.

tôi cũng đã cố gắng sử dụng một try - finally chặn hoặc thậm chí là hộp thoại gọi. Không có bất kỳ khối nào, tất cả đều không có sẵn - cảnh báo vẫn còn, luôn ở dòng khởi tạo.

+0

Rất tiếc, nhưng tôi không thể tạo lại cảnh báo CA2000 cho mã trên. Bạn có chắc chắn nó không phải là do cái gì khác? –

+0

Không, tôi ước .. bạn đã chạy nó trong một cửa sổ ứng dụng mẫu thích hợp gọi lại? – Efrain

+0

Tôi không thấy vi phạm CA2000 trong phương thức ngay cả khi nó có dây dưới dạng nút Nhấn vào trình xử lý sự kiện trong biểu mẫu Windows vani trong một biểu mẫu Windows thực thi vani. Bạn có thấy vi phạm nếu bạn thêm mã "repro" tối thiểu vào ứng dụng Windows Forms mới không? –

Trả lời

5

Cảnh báo không phải vì FolderBrowserDialog không được xử lý, đó là vì nó có một số thành viên công cộng triển khai giao diện IDisposable và bạn không xử lý chúng một cách riêng biệt. Tất nhiên, đối tượng FolderBrowserDialog biết cách loại bỏ các phụ thuộc của nó nhưng FxCop không có cách nào để biết rằng nó cho một cảnh báo. Chỉ cần bỏ qua cảnh báo trong trường hợp của bạn.

+1

vì vậy .. về cơ bản FolderBrowserDialog không tuân thủ CA2000? O_o – Efrain

+1

Trên thực tế những điều tương tự cũng xảy ra với một số điều khiển khác, không có gì đặc biệt cho FolderBrowserDialog. (nó xảy ra với tôi tất cả các thời gian với đối tượng font chữ, điều khiển hình ảnh, vv) –

+2

Đó là nhiều hơn một trường hợp CA2000 gần như vô dụng. Nó tạo ra rất nhiều xác thực sai lầm rằng các cảnh báo chính hãng bị mất trong tiếng ồn. – LukeH

Các vấn đề liên quan