Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: có thể dispose tcpchannel được ko

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    13

    Mặc định có thể dispose tcpchannel được ko

    chương trình của mình có sử dụng đến .net remoting nhưng ko thường xuyên mà lâu lâu mới dùng, vì vậy mình ko mún tạo ra ngay từ đầu rùi start stop, mà mình mún tạo ra khi cần và khi đã dùng xong thì xoá nó đi. Giải pháp tạm thời của mình là set biến channel = null, nhưng làm vậy thì sẽ bị leak memory (object cũ vẫn còn). Ai có cách nào thì chỉ mình. Thanks!

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    C# tự động thu gom cho bạn, bạn không cần giải phóng đâu. Cho nên, lúc nào cần thì bạn tạo ra, ngoài phạm vi sử dụng thì C# sẽ thu gom cho bạn.

    Nếu muốn thu gom tức thời thì đưa 2 lệnh sau chèn sau khi bạn close và gán bằng null;
    Visual C# Code:
    1. GC.Collect();
    2. GC.WaitForPendingFinalizers();

    Nói chung là Kevin không nghiên cứu nhiều về C#, các bạn khác có thể sẽ bổ sung thêm ý tưởng cho bạn.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    13

    Hiểu ý admin, mình cũng biết là c# có cơ chế tự dispose, chỉ là biến channel của mình là global (vì nó có mặt trong vài hàm khác nhau) mà việc tạo nó ra thì làm trong 1 hàm (vd void A() ). nếu channel là biến local trong A() thì ko có gì để nói, vì khi chạy xong A() nó sẽ tự huỷ, nhưng channel là global nên nó chắc chắn sẽ ko bị huỷ lúc.

    Đa số mấy cái obj của .Net đều có sẵn các hàm dispose() hay close(), tự nhiên thằng tcpchannel lại ko có nên ko biết cách nào để release nó rùi khi nào cần sẽ tạo mới sau, ngắt kết nối thì unregister mình biết rồi, chỉ mún hỏi cho biết về vấn đề này để tránh lãng phí bộ nhớ thui, ko quan trọng lắm.

    Rất cám ơn vì đã trả lời

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Tại sao không sử dụng lệnh sau đây nhỉ?

    Visual C# Code:
    1. ChannelServices.UnregisterChannel(yourChannelVariable);
    2. GC.ReRegisterForFinalize(yourChannelVariable);
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    gán null cho object ko cần dùng nữa & gọi lệnh GC
    vì vậy trước khi dùng object phải check null
    regards !

  6. #6
    Ngày gia nhập
    12 2007
    Bài viết
    13

    Mặc định có thể dispose tcpchannel được ko

    ok Thank nhìu, mình sẽ thử coi sao

Các đề tài tương tự

  1. Lỗi 'Handle is not initialized.' trong phần Dispose của form C#?
    Gửi bởi ndnhan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 24-10-2012, 12:25 PM
  2. Error Value Dispose() cannot be called while doing CreateHandle() on threading
    Gửi bởi angeltrongminh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 01-11-2011, 11:25 PM
  3. kiểm tra kết nối của Client trong lập trình C# (remoting.tcpChannel)
    Gửi bởi kenturo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 21-11-2010, 05:11 PM
  4. Giải thích giùm phương thức Dispose
    Gửi bởi bachdienthusinh trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 22-04-2010, 10:11 AM
  5. Dispose 1 Form! Help
    Gửi bởi numberVII trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 6
    Bài viết cuối: 30-07-2009, 04:08 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn