diff --git a/src/csharp/Grpc.Core.Tests/ShutdownHookServerTest.cs b/src/csharp/Grpc.Core.Tests/ShutdownHookServerTest.cs
index 7990a7d15f10849856cfb1b3c7d2771882a5dc7d..2f40e1a8ef260943b70654b1fd400e02872fd793 100644
--- a/src/csharp/Grpc.Core.Tests/ShutdownHookServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ShutdownHookServerTest.cs
@@ -59,10 +59,9 @@ namespace Grpc.Core.Tests
             server.Start();
             AppDomain.CurrentDomain.ProcessExit += (object sender, EventArgs e) =>
             {
-                // TODO: expose API for killing all servers
-                // TODO: expose API for closing all channels
-                server.KillAsync();
-                GrpcEnvironment.ReleaseAsync();
+                var shutdownChannelsTask = GrpcEnvironment.ShutdownChannelsAsync();
+                var killServersTask = GrpcEnvironment.KillServersAsync();
+                Task.WaitAll(shutdownChannelsTask, killServersTask);
             };
         }
 
diff --git a/src/csharp/Grpc.Core.Tests/ShutdownHookTest.cs b/src/csharp/Grpc.Core.Tests/ShutdownHookTest.cs
index 301ae091c61229b2f137af5b6ca66a9f2c8eee0c..da71ed7e2ec3080fbee94042ef76e14582e61d11 100644
--- a/src/csharp/Grpc.Core.Tests/ShutdownHookTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ShutdownHookTest.cs
@@ -55,10 +55,10 @@ namespace Grpc.Core.Tests
         public void AppDomainProcessExitHook()
         {
             var channel = new Channel(Host, 1000, ChannelCredentials.Insecure);
+            var channel2 = new Channel(Host, 1001, ChannelCredentials.Insecure);
             AppDomain.CurrentDomain.ProcessExit += (object sender, EventArgs e) =>
             {
-                // TODO: expose API to shutdown all channels.
-                channel.ShutdownAsync();
+                GrpcEnvironment.ShutdownChannelsAsync().Wait();
             };
         }