Chuyển đến nội dung chính

Bài đăng

Đang hiển thị bài đăng từ Tháng 8, 2020

Sử dụng interface IDispose trong C#

Sử dụng hàm Dispose chủ yếu để giải phóng các tài nguyên không được kiểm soát. Ngoài ra, hàm này còn được dùng để xóa phần tử trong 1 tập hợp hoặc làm cờ để báo rằng hàm Dispose() đã được gọi. Gọi hàm Dispose Gọi hàm Dispose thủ công class Program { static void Main(string[] args) { var disp = new DisposableDemoClass(); disp.Dispose(); } } class DisposableDemoClass : IDisposable { public void Dispose() { Console.WriteLine("Dispose called!"); } } Sử dụng using class Program { static void Main(string[] args) { using (var disp = new DisposableDemoClass()) { } } } class DisposableDemoClass : IDisposable { public void Dispose() { Console.WriteLine("Dispose called!"); } } Hàm Dispose Ở hàm Dispose(), bạn gọi thêm phương thức GC.SuppressFinalize(this). SuppressFinalize chỉ nên được gọi bởi trong hàm Descontructor. Nó thông báo cho Bộ sưu tập rác (GC) rằng đối tượng this đã được dọn sạch hoàn toàn. public void Dispose() { // Dispose of u...

Khai thác dữ liệu web với AngleSharp trong .NET Core

Web scrapping là gì? Web scraping là một quá trình tự động thu thập thông tin từ website. Nói là cách đơn giản là lấy thông tin (html) từ 1 website cụ thể rồi trích xuất data cần thiết. Ứng dụng là việc khai thác dữ liệu là bạn có thể tùy biến để cập nhật tin tức, giá cả cổ phiếu, vàng, ... Hiện tại, có nhiều thư viện hỗ trợ như: AngleSharp và HtmlAgilityPack. Nhưng mình thấy HtmlAgilityPack chưa hỗ trợ .NET Core nên mình quyết định mài mò nghiên cứu AngleSharp. Cài đặt và sử dụng AngleSharp Tạo project Console Application mới. Sau đó cài đặt AngleSharp dotnet add package AngleSharp Khai báo namespace: using AngleSharp; using AngleSharp.Dom; using AngleSharp.Html.Dom; Để thực hiện việc lấy data, bạn không cần khai báo HttpModule. AngleSharp sẽ làm việc đó thay bạn Đoạn code dưới đây sẽ lấy data từ 1 trang web có địa chỉ url, ví dụ trang https://vnexpress.net var config = Configuration.Default.WithDefaultLoader(); var context = BrowsingContext.New(config); var docum...

Tìm hiểu về Cancellation trong C# và những điều bạn cần biết

Cancellation token là gì? Cơ chế Task trong C# là 1 tính năng mạnh mẽ trong lập trình Parallel và Concurrent. Vấn đề đặt ra nếu bạn thực hiện đa luồng, thì làm sao để hủy bỏ những những hàm bất đồng. Tại sao chúng ta cần kiểm soát Task? Một trong những lý do là yêu cầu về mặt logic hoặc thuật toán, bên cạnh đó là những luồng không thể kiểm soát được. Và khi hủy bỏ Task, bạn cần throw an exception thay vì trả về một kết quả null (hoặc rỗng). .NET cung cấp 2 class: CancellingTokenSource: là một đối tượng chịu trách nhiệm tạo Cancellation Token và gởi request đến tất cả các hàm chứa đối tượng đó. CancellationToken: là một cấu trúc được dùng để theo dõi trạng thái của Token hiện tại Ví dụ Dừng Task thủ công Phương thức CancellationTokenSource.Cancel() được dùng để hủy Task khi thỏa điều kiện logic Ví dụ dưới đây thực hiện việc tính tổng, khi thỏa điều kiện số ngẫu nhiên = 0 => dừng việc phát sinh số ngẫu ...