diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/ConsoleNotificationHandler.cs b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/ConsoleNotificationHandler.cs new file mode 100644 index 0000000000..944e7b7d91 --- /dev/null +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/ConsoleNotificationHandler.cs @@ -0,0 +1,11 @@ +namespace TaskCompletedVsTaskFromResultVsReturnInCSharp; + +public class ConsoleNotificationHandler : INotificationHandler +{ + public Task HandleAsync(string message) + { + Console.WriteLine(message); + + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/INotificationHandler.cs b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/INotificationHandler.cs new file mode 100644 index 0000000000..1070ed11be --- /dev/null +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/INotificationHandler.cs @@ -0,0 +1,6 @@ +namespace TaskCompletedVsTaskFromResultVsReturnInCSharp; + +public interface INotificationHandler +{ + Task HandleAsync(string message); +} \ No newline at end of file diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/Program.cs b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/Program.cs index cda0e1b40a..addc51b02f 100644 --- a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/Program.cs +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/Program.cs @@ -2,11 +2,9 @@ var taskCompletedClass = new TaskCompletedHandler(); await taskCompletedClass.UseTaskCompletedAsync(); -taskCompletedClass.UseTaskCompletedSync(); var taskFromResultClass = new TaskFromResultHandler(); await taskFromResultClass.UseTaskFromResultAsync(); -taskFromResultClass.UseTaskFromResultSync(); var returnClass = new ReturnHandler(); await returnClass.UseReturnAsync(); diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedHandler.cs b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedHandler.cs index 6ae5d7b174..fc201adf45 100644 --- a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedHandler.cs +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedHandler.cs @@ -8,11 +8,4 @@ public Task UseTaskCompletedAsync() return Task.CompletedTask; } - - public void UseTaskCompletedSync() - { - Console.WriteLine("Performing a synchronous work."); - - Task.CompletedTask.Wait(); - } } \ No newline at end of file diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp.csproj b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp.csproj index f02677bf64..dfb40caafc 100644 --- a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp.csproj +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net10.0 enable enable diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskFromResultHandler.cs b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskFromResultHandler.cs index 7929db35ba..012cb74f27 100644 --- a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskFromResultHandler.cs +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/TaskCompletedVsTaskFromResultVsReturnInCSharp/TaskFromResultHandler.cs @@ -2,21 +2,12 @@ public class TaskFromResultHandler { - public async Task UseTaskFromResultAsync() + public Task UseTaskFromResultAsync() { Console.WriteLine("Not performing any asynchronous work but returning a result."); var message = "Hello, world!"; - return await Task.FromResult(message); - } - - public string UseTaskFromResultSync() - { - Console.WriteLine("Performing a synchronous work."); - - var message = "Hello, world!"; - - return Task.FromResult(message).Result; + return Task.FromResult(message); } } \ No newline at end of file diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnInCSharpTests.csproj b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnInCSharpTests.csproj index c6f372580a..f6f7ed0ced 100644 --- a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnInCSharpTests.csproj +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnInCSharpTests.csproj @@ -1,7 +1,7 @@ - net7.0 + net10.0 enable enable @@ -10,13 +10,13 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnTests.cs b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnTests.cs index ff4bdfc0dc..75a325be8c 100644 --- a/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnTests.cs +++ b/async-csharp/TaskCompletedTaskFromResultVsReturnInCSharp/Tests/TaskCompletedVsTaskFromResultVsReturnTests.cs @@ -31,4 +31,24 @@ public async Task WhenCallingUseReturnAsync_ThenUseReturn() Assert.Equal(20, result); } + + [Fact] + public void WhenCallingUseTaskFromResultAsync_ThenTaskIsAlreadyComplete() + { + var taskFromResultClass = new TaskFromResultHandler(); + + var result = taskFromResultClass.UseTaskFromResultAsync(); + + Assert.True(result.IsCompletedSuccessfully); + } + + [Fact] + public void WhenCallingHandleAsync_ThenTaskIsAlreadyComplete() + { + INotificationHandler handler = new ConsoleNotificationHandler(); + + var result = handler.HandleAsync("Order 42 shipped."); + + Assert.True(result.IsCompletedSuccessfully); + } } \ No newline at end of file