Author page: Mark Michaelis

.NET Reunified: Microsoft’s Plans for .NET 5

When Microsoft announced .NET 5 at Microsoft Build 2019 in May, it marked an important step forward for developers working across desktop, Web, mobile, cloud and device platforms. In fact, .NET 5 is that rare platform update that unifies divergent frameworks, reduces code complexity and significantly advances cross-platform reach. This is no small task. Microsoft is proposing to merge the…

Machine Learning Can Save Lives In Spokane

Examine medical data and cure problems using computer algorithms without violating HIPPA. Machine learning is an area of quantitative science that allows computers to run algorithms to create predictions or disentangle causality. We are no longer limited by the ideas that the human brain can formulate because machine learning can uncover unconsidered possibilities. Medical breakthroughs are happening by data mining…

Interfacing with Multithreading Patterns prior to TPL and C# 5.0

Legacy Blog – Pre C# 5.0 Multithreading patterns are used to address the multithreading complexities of monitoring an asynchronous operation, thread pooling, avoiding deadlocks, and implementing atomicity and synchronization across operations and data access. This is a thorough blog that combs through all you’d need to know about multithreading if you were working in a legacy version of C#. Although…

Using Tuples for overriding Equality() and GetHashCode()

The implementation of Equals() and GetHashCode() used to be complex, but with C# 7.0 Tuples, the actual code is boilerplate. For Equals(): It’s necessary to compare all the contained identifying data structures while avoiding infinite recursion or null reference exceptions. For GetHashCode(): It’s necessary to combine the unique hash code of each of the non-null contained identifying data structures in…

ILDasm with .Net Core

Need to Convert CIL Code into Text? Try ILDasm!   The C# compiler converts C# code to common intermediate language (CIL) code and not to machine code. The processor can directly understand machine code, but CIL code needs to be converted before the processor can execute it. Consider using the Intermediate Language Disassembler (ILDasm) when you need to convert CIL…

Timers Prior to Async/Await Pattern of C# 5.0

There are multiple ways to use Task.Delay() when a timer is required. For scenarios prior to .NET 4.5, several timer classes are available, including System.Windows.Forms.Timer, System.Timers.Timer, and System.Threading.Timer. The development team designed System.Windows.Forms.Timer specifically for use within a rich client user interface. Programmers can drag it onto a form as a nonvisual control and regulate the behavior from within the…

C# 7.0: Tuples Explained

Back in November, in the Connect() special issue of MSDN Magazine, I provided an overview of C# 7.0 in which I introduced tuples. Click here for the overview. In this blog I delve into tuples again, covering the full breadth of the syntax options. To begin, let’s consider the question: Why tuples? On occasion, you’ll likely find it useful to…