In this tutorial, we will take a look at thread synchronization with Monitor and Lock in C#. In this post, I showed how to start new threads to execute code in parallel. However, when you start using threads what can happen is that two threads will access the same resources at the same time. One thread might modify a variable before another thread is done executing. This can, of course, cause errors. To prevent this from happening we have to lock the resources in question and prevent other threads from using them until the current thread is done executing. We can do this by either using the Monitor class or the lock keyword. These two approaches are functionally identical. The only difference (as you will be able to see in the code below) is that lock is more compact and easier to use.
In this tutorial, we will take a look at event arguments in C#. Event arguments allow you to pass data(from publisher to subscriber) with the event when it is triggered. To return data with an event you must make a class that inherits from the EventArgs class. In this new derived class you can add the properties you want to send. Then you return this EventArgs child class with the event.
In this tutorial, we will see how to exchange thread data by using an object in C#. This post is very similar to this post I already made about sending/receiving data to/from a thread. The only difference is that here an object will be used for the data. To pass data into the thread we will create a class and make two properties one for the input data and one for the callback delegate. When an instance of the class is being created the input data and the callback delegate must be passed into the constructor. After the object has been created its doWork() method can be started as a new thread.
In this tutorial, we will see how to pass/get data to/from a thread in C#. To pass data into the thread we will simply pass it as an input parameter to the method that is being started as a new thread. To get the data from the thread a delegate callback method will be used. First, we will make a regular method that takes in an input parameter. Then we will make a delegate and make it point to this method. Finally, the delegate will be passed as an input parameter to the method that is being started as a new thread. When the child thread is done executing it will call the callback method that is located in the main thread and pass it the result as an input parameter. This is how we will be able to get the result from the child thread back into the main one.
In this tutorial, we will take a look at threads in C#. Threads are like “small processes”. Each application runs as a process with one main thread. From there you can create new threads to execute code in parallel or better said asynchronously with respect to the main thread.
Usually, the code we write executes procedurally(line by line). So if we have a time-consuming task like writing to file(which can be very slow compared to the speed at which things happen in the CPU) our program will have to wait for that operation to be over before continuing with its execution.
In this tutorial, we will take a look at events in C#. A class(subscriber class) can subscribe to an event of another class(publisher class). The publisher class notifies the subscriber class every time the event occurs. This works by using delegates. The subscriber will pass its delegate to the publisher class to “make a subscription” to its event. When the event occurs the publisher will call the delegate(callback method) that was provided to it by the subscriber when it “subscribed” to the event. This is how (for example button press event) events work in .NET. This principle of operation is also called the observer pattern.
In this tutorial, we will take a look at delagates in C#. A delegate is a pointer to a method(basically an indirect call to the method). Delegates can be passed as input parameters to other methods. A benefit of this is that it provides flexibility. Such a method can then use the passed in delegate to call another method(callback method). This is actually the way events work.
In this tutorial, we will see how to use the Open File Dialog in WFA C# apps. In this example, I will use a WFA application. If you just want to know how to create/read/write files check out this example with a console application.
In this tutorial, we will see how to write and read files in C#. In this example, I will use a console application. If you want to know how to open a file dialog and select/create a file in a WFA application see this post. For WPF applications see this post.
In this tutorial, we will see the difference between method hiding and overriding in C#. The difference between method hiding and method overriding becomes evident when a class object is used polymorphically. The child version of the method gets called only when the method is overridden. If the method is hidden(new keyword) the parent version of the method gets called. Meanwhile, if we don’t call a method polymorphically the new keyword will act in the same way as the override keyword does and hide the original parent implementation of the method.