### Understanding the Task
The task is to demonstrate the use of tasks in C#. Specifically, I will create a code snippet that showcases the creation and execution of tasks, including proper error handling and documentation comments.
### Key Points
* Create a task that performs a simple operation (e.g., calculating the square of a number)
* Demonstrate how to execute the task synchronously and asynchronously
* Handle potential exceptions that may occur during task execution
* Adhere to best practices in C# programming, including naming conventions, documentation comments, and modular design
### Code Snippet
```csharp
using System;
using System.Threading.Tasks;
namespace TaskDemo
{
/// <summary>
/// Demonstrates the use of tasks in C#.
/// </summary>
public class TaskExample
{
/// <summary>
/// Calculates the square of a number.
/// </summary>
/// <param name="number">The number to square.</param>
/// <returns>The squared result.</returns>
private static async Task<int> CalculateSquareAsync(int number)
{
try
{
// Simulate some work
await Task.Delay(100);
// Calculate the square
int result = number * number;
// Return the result
return result;
}
catch (Exception ex)
{
// Handle the exception
Console.WriteLine($"An error occurred: {ex.Message}");
throw;
}
}
/// <summary>
/// Executes the task synchronously.
/// </summary>
public static void ExecuteTaskSynchronously()
{
int number = 5;
try
{
int result = CalculateSquareAsync(number).Result;
Console.WriteLine($"Synchronous result: {result}");
}
catch (AggregateException ex)
{
Console.WriteLine($"Synchronous error: {ex.InnerException.Message}");
}
}
/// <summary>
/// Executes the task asynchronously.
/// </summary>
public static async void ExecuteTaskAsynchronously()
{
int number = 5;
try
{
int result = await CalculateSquareAsync(number);
Console.WriteLine($"Asynchronous result: {result}");
}
catch (Exception ex)
{
Console.WriteLine($"Asynchronous error: {ex.Message}");
}
}
}
class Program
{
static void Main(string[] args)
{
TaskExample.ExecuteTaskSynchronously();
TaskExample.ExecuteTaskAsynchronously();
Console.ReadLine();
}
}
}
```
This code snippet creates a `TaskExample` class that demonstrates the use of tasks in C#. The `CalculateSquareAsync` method calculates the square of a number and simulates some work using a delay. The method is marked as `async` to allow for asynchronous execution.
The `ExecuteTaskSynchronously` method executes the task synchronously using the `Result` property, while the `ExecuteTaskAsynchronously` method executes the task asynchronously using the `await` keyword. Both methods handle potential exceptions that may occur during task execution.
In the `Main` method, we call both execution methods to demonstrate the synchronous and asynchronous execution of the task.
Note that this is a simple example, and in a real-world scenario, you would want to handle errors more robustly and consider using `Task.Run` or `Task.Factory.StartNew` to create tasks.