Tôi vừa đọc bài đăng trên blog của bạn và tôi nghĩ bạn có một chút lời khuyên gây hiểu lầm, Matt. Nếu có bộ nhớ thực tế rò rỉ tại đây, thì đó là lỗi trong Khuôn khổ .NET và không phải thứ gì đó bạn nhất thiết có thể khắc phục trong mã của bạn.
Những gì tôi nghĩ rằng bạn (và áp phích trên blog của bạn) thực sự nói về ở đây không thực sự là một rò rỉ, nhưng thay vì tiêu thụ liên tục của bộ nhớ. Đó không phải là điều tương tự. Để được rõ ràng, bộ nhớ bị rò rỉ là bộ nhớ được dành riêng bởi một chương trình, sau đó bị bỏ rơi (tức là, một con trỏ bị treo lơ lửng), và sau đó không thể được giải thoát. Kể từ khi bộ nhớ được quản lý trong .NET, đây là lý thuyết không thể. Có thể, tuy nhiên, đối với một chương trình để dự trữ một số lượng ngày càng tăng của bộ nhớ mà không cho phép tài liệu tham khảo để nó đi ra khỏi phạm vi (và trở thành đủ điều kiện cho thu gom rác thải); tuy nhiên bộ nhớ đó không bị rò rỉ. GC sẽ trả lại cho hệ thống khi chương trình của bạn thoát.
So. Để trả lời câu hỏi của bạn, tôi không nghĩ bạn thực sự gặp vấn đề ở đây. Bạn chắc chắn không có một rò rỉ bộ nhớ, và từ mã của bạn, tôi không nghĩ rằng bạn cần phải lo lắng, như xa như tiêu thụ bộ nhớ đi một trong hai. Miễn là bạn đảm bảo rằng bạn không liên tục gán trình xử lý sự kiện đó mà không bao giờ bỏ gán nó (nghĩa là bạn chỉ từng đặt nó một lần hoặc xóa chính xác một lần cho mỗi lần bạn gán nó), bạn dường như đang làm, mã của bạn nên được tốt. Có vẻ như đó là lời khuyên rằng áp phích trên blog của bạn đang cố gắng cung cấp cho bạn, nhưng ông đã sử dụng công việc đáng báo động đó là "rò rỉ", đó là một từ đáng sợ, nhưng nhiều lập trình viên đã quên ý nghĩa thực sự của thế giới được quản lý; nó không áp dụng ở đây.
Tôi bỏ phiếu xuống vì câu trả lời không liên quan gì đến câu hỏi thực tế được hỏi. Mọi người đều biết về các lỗ hổng của bộ nhớ bị rò rỉ và nguyên nhân của nó, đặc biệt là do xử lý sự kiện như bạn đã đề cập. Những gì @Matt ở đây muốn biết là làm thế nào để xử lý sự kiện một cách an toàn xử lý sự kiện khi sử dụng bên trong hành vi kèm theo. Tôi sẽ sớm trả lời câu hỏi này. –