---
title: "BCL - Muhammad Rehan Saeed"
description: "Blog posts authored by Muhammad Rehan Saeed about BCL."
canonical_url: "https://rehansaeed.com/tag/bcl/"
meta:
  author: "Muhammad Rehan Saeed"
  "og:description": "Blog posts authored by Muhammad Rehan Saeed about BCL."
  "og:image": "https://rehansaeed.com/_og/s/o_5a3a8d9a45d87629.png"
  "og:image:alt": "# BCL - Muhammad Rehan Saeed"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": BCL
  "twitter:image": "https://rehansaeed.com/_og/s/o_5a3a8d9a45d87629.png"
  "twitter:image:alt": "# BCL - Muhammad Rehan Saeed"
---

> Index of every page on this site: [llms.txt](https://rehansaeed.com/llms.txt)

# [# BCL](https://rehansaeed.com/tag/bcl/)

## [Reactive Extensions (Rx) - Part 8 - Timeouts](https://rehansaeed.com/reactive-extensions-rx-part-8-timeouts/)

Should you use Reactive Extensions (Rx) to do timeouts in .NET? It turns out it's better to use CancellationTokenSource in the Task Parallel Library (TPL).

Posted 2 January 2017 - **1 min read**

## [Logging with Serilog.Exceptions](https://rehansaeed.com/logging-with-serilog-exceptions/)

Log exception details and custom properties that are not output in Exception.ToString() using Serilog.Exceptions for .NET.

Posted 31 January 2016 - **3 min read**

## [Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo](https://rehansaeed.com/model-view-viewmodel-mvvm-part4-inotifydataerrorinfo/)

An base class implementation for the INotifyDataErrorInfo interface. Used in the Model-View-ViewModel (MVVM) pattern. Targeted for best performance.

Posted 9 September 2014 - **12 min read**

## [Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged](https://rehansaeed.com/model-view-viewmodel-mvvm-part3-inotifypropertychanged/)

An base class implementation for the INotifyPropertyChanged interface. Used in the Model-View-ViewModel (MVVM) pattern. Targeted for best performance.

Posted 18 June 2014 - **11 min read**

## [Model-View-ViewModel (MVVM) - Part 2 - IDisposable](https://rehansaeed.com/model-view-viewmodel-mvvm-part2-idisposable/)

Implementing IDisposable correctly is ridiculously hard. A Disposable base class can make it easier. Using IDisposable in Model-View-ViewModel (MVVM) really helps.

Posted 13 June 2014 - **4 min read**

## [Model-View-ViewModel (MVVM) - Part 1 - Overview](https://rehansaeed.com/model-view-viewmodel-mvvm-part1-overview/)

What really goes into using Model-View-ViewModel (MVVM) in .NET. Base classes for INotifyPropertyChanged, INotifyDataErrorInfo, IDisposable and a lot more.

Posted 14 May 2014 - **5 min read**

## [GetHashCode Made Easy](https://rehansaeed.com/gethashcode-made-easy/)

Implementing GetHashCode is hard work and little understood. Learn how to implement GetHashCode as quickly and as simply as possible.

Posted 14 April 2014 and updated 12 June 2019 - **8 min read**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://rehansaeed.com/#website","@type":"WebSite","description":"Software Developer at Microsoft, YouTuber, Open Source Contributor and Blogger","inLanguage":"en-GB","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com/","author":{"@id":"https://rehansaeed.com/#identity"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://rehansaeed.com/?search={search_term_string}"},"query-input":"required name=search_term_string"}],"publisher":{"@id":"https://rehansaeed.com/#publisher"}},{"@id":"https://rehansaeed.com/tag/bcl/#webpage","description":"Blog posts authored by Muhammad Rehan Saeed about BCL.","name":"BCL","url":"https://rehansaeed.com/tag/bcl/","@type":["WebPage","CollectionPage"],"breadcrumb":{"@id":"https://rehansaeed.com/tag/bcl/#breadcrumb"},"isPartOf":{"@id":"https://rehansaeed.com/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://rehansaeed.com/tag/bcl/"]}]},{"@id":"https://rehansaeed.com/#identity","@type":"Person","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com/about/","image":{"@id":"https://rehansaeed.com/#/schema/image/1"},"sameAs":["https://github.com/RehanSaeed","https://www.linkedin.com/in/muhammad-rehan-saeed","https://stackoverflow.com/users/1212017/muhammad-rehan-saeed","https://www.youtube.com/c/MuhammadRehanSaeed","https://www.twitch.tv/rehansaeeduk"]},{"@id":"https://rehansaeed.com/#publisher","@type":"Organization","logo":"https://rehansaeed.com/images/schema/Publisher-600x60.png","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com"},{"@id":"https://rehansaeed.com/tag/bcl/#/schema/item-list/1","@type":"ItemList","itemListElement":[{"@type":"ListItem","name":"Reactive Extensions (Rx) - Part 8 - Timeouts","url":"https://rehansaeed.com/reactive-extensions-rx-part-8-timeouts/","position":1},{"@type":"ListItem","name":"Logging with Serilog.Exceptions","url":"https://rehansaeed.com/logging-with-serilog-exceptions/","position":2},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part4-inotifydataerrorinfo/","position":3},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part3-inotifypropertychanged/","position":4},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part2-idisposable/","position":5},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 1 - Overview","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part1-overview/","position":6},{"@type":"ListItem","name":"GetHashCode Made Easy","url":"https://rehansaeed.com/gethashcode-made-easy/","position":7}]},{"@id":"https://rehansaeed.com/tag/bcl/#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Blog","item":"https://rehansaeed.com/","position":1},{"@type":"ListItem","name":"BCL","item":"https://rehansaeed.com/tag/bcl/","position":2}]},{"@id":"https://rehansaeed.com/#/schema/image/1","@type":"ImageObject","contentUrl":"https://rehansaeed.com/images/author/Muhammad-Rehan-Saeed/Logo-512x512.png","inLanguage":"en-GB","url":"https://rehansaeed.com/images/author/Muhammad-Rehan-Saeed/Logo-512x512.png"}]}
```

## Sitemap

See the full [sitemap](https://rehansaeed.com/sitemap.md) for all pages.
