相关疑难解决方法(0)

如何实现异步方法及其同步方法?

我有一个方法,例如Task<string> GetContentAsync(string url),我的控制台应用程序还没有完全准备好在内部利用TPL,但可能在以后它会.

如何为这个(或其他)方法轻松编写同步包装器(不是替代实现)?

.net c# task-parallel-library

6
推荐指数
1
解决办法
2417
查看次数

DiscoveryClient.GetAsync("http://localhost:5000") 中崩溃

如标题所示:控制台应用程序在执行以下行时崩溃

disco = await DiscoveryClient.GetAsync("http://localhost:5000");
Run Code Online (Sandbox Code Playgroud)

没有抛出异常,即使我将它包装在try catch调试中也只是断线;输出中没有相关信息。Visual Studio 只是停止调试应用程序并返回到编辑模式。

有人遇到过类似的事情吗?:( 我可以尝试做什么?

我使用的是VS2015,控制台应用程序是.NETCoreApp v1.0,使用“IdentityModel”:“2.0.0-rc6”;。Identity Server 4 在 localhost:5000、.NETCoreApp v1.0 上运行。

GetAsync使用https://demo.identityserver.io参数调用方法也会导致所描述的错误。

我正在关注本教程:https://identityserver4.readthedocs.io/en/dev/quickstarts/1_client_credentials.html

.net identityserver4

5
推荐指数
1
解决办法
2025
查看次数

异步方法中抛出的异常未被捕获 - 为什么?

我很难理解 async/await 在各种非快乐路径情况下如何工作。例如,我有以下代码:

    class Program
    {
        static void Main(string[] args)
        {
            Do();
            Console.ReadLine();
        }

        private static void Do()
        {
            TaskScheduler.UnobservedTaskException += (s, e) =>
            {
                Console.WriteLine($"Unobserved Exception : {e.Exception.Message}");
                e.SetObserved();
            };
            
            try
            {                
                ThrowsAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Caught in try/catch  : {ex.Message}");
            }
        }

        private static async Task ThrowsAsync()
        {    
            Console.WriteLine("Throwing");
            throw new Exception("FAILURE");
        }
    }
Run Code Online (Sandbox Code Playgroud)

有两件事我不明白:

  1. ThrowsAsync方法是异步的,但是,它不包含任何await. 我假设在这种情况下该方法将像“正常”同步方法一样执行。然而,它抛出的异常永远不会被catch块捕获。
  2. 为了以某种方式捕获异常,我添加了TaskScheduler.UnobservedTaskException. 然而,它永远不会被执行。这是为什么?

我知道如果我等待,异常就会被捕获ThrowsAsync。不过,我正在尝试更好地了解它的工作原理。

我正在使用 .NET 5 和基于 Linux 的操作系统运行该代码。

.net c# asynchronous exception async-await

1
推荐指数
1
解决办法
1744
查看次数