Friday, 15 May 2020

Async and Await Theory


What is Task in C#? ( ref: https://www.csharpstar.com/tasks-csharp/)

 
.NET framework provides Threading.Tasks class to let you create tasks and run them asynchronously. A task is an object that represents some work that should be done. The task can tell you if the work is completed and if the operation returns a result, the task gives you the result.
C# task object typically executes asynchronously on a thread pool thread rather than synchronously on the main application thread.
 
Task And Thread In C#

What is Thread?

 
.NET Framework has thread-associated classes in System.Threading namespace.  A Thread is a small set of executable instructions.
Task And Thread In C#

Why we need Tasks
 
It can be used whenever you want to execute something in parallel. Asynchronous implementation is easy in a task, using’ async’ and ‘await’ keywords.
    Why we need a Thread
     
    When the time comes when the application is required to perform few tasks at the same time.
     

    Properties of Task Class:

    PropertyDescription
    ExceptionReturns any exceptions that caused the task to end early
    StatusReturns the Tasks status
    IsCancelledReturns true if the Task was cancelled
    IsCompletedReturns true if the task is completed successfully
    IsFaultedReturns true if the task is stopped due to unhandled exception
    FactoryProvides acess to TaskFactory class. You can use that to create Tasks

     

    Methods in Task Class :

    MethodsPurpose
    ConfigureAwaitYou can use Await keyword for the Task to complete
    ContinueWithCreates continuation tasks.
    DelayCreates a task after specified amount of time
    RunCreates a Task and queues it to start running
    RunSynchronouslyRuns a task Synchronously
    StartStarts a task
    WaitWaits for the task to complete
    WaitAllWaits until all tasks are completed
    WaitAnyWaits until any one of the tasks in a set completes
    WhenAllCreates a Task that completes when all specified tasks are completed
    WhenAnyCreates a Task that completes when any specified tasks completes

     

    How to create a Task

    1. static void Main(string[] args) {  
    2.     Task < string > obTask = Task.Run(() => (  
    3.         return“ Hello”));  
    4.     Console.WriteLine(obTask.result);  

    How to create a Thread

    1. static void Main(string[] args) {  
    2.     Thread thread = new Thread(new ThreadStart(getMyName));  
    3.     thread.Start();  
    4. }  
    5. public void getMyName() {} 

    Differences Between Task And Thread

     
    Here are some differences between a task and a thread.
    1. The Thread class is used for creating and manipulating a thread in Windows. A Task represents some asynchronous operation and is part of the Task Parallel Library, a set of APIs for running tasks asynchronously and in parallel.
    2. The task can return a result. There is no direct mechanism to return the result from a thread.
    3. Task supports cancellation through the use of cancellation tokens. But Thread doesn't.
    4. A task can have multiple processes happening at the same time. Threads can only have one task running at a time.
    5. We can easily implement Asynchronous using ’async’ and ‘await’ keywords.
    6. A new Thread()is not dealing with Thread pool thread, whereas Task does use thread pool thread.
    7. A Task is a higher level concept than Thread.
    8. One of the major difference between task and thread is the propagation of exception. While using thread if we get the exception in the long running method it is not possible to catch the exception in the parent function but the same can be easily caught if we are using tasks.

    No comments:

    Post a Comment

    Baisic Useful Git Commands

      Pushing a fresh repository Create a fresh repository(Any cloud repository). Open terminal (for mac ) and command (windows) and type the be...