Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么try-catch-in编程方法不起作用?_C#_Asynchronous_Windows 8_Task Parallel Library_Async Await - Fatal编程技术网

C# 为什么try-catch-in编程方法不起作用?

C# 为什么try-catch-in编程方法不起作用?,c#,asynchronous,windows-8,task-parallel-library,async-await,C#,Asynchronous,Windows 8,Task Parallel Library,Async Await,这个问题让我头疼。我无法实现我的尝试能够捕获我的异常。这是照片 在一瞬间,我正在试验这个。而且很有效 var task = client.GetAsync(uri); try { task.Wait(); } catch (Exception ex) { throw ex;

这个问题让我头疼。我无法实现我的尝试能够捕获我的异常。这是照片

在一瞬间,我正在试验这个。而且很有效

            var task = client.GetAsync(uri);
            try
            {
                task.Wait();
            }
            catch (Exception ex)
            {
                throw ex;
            }
但上面的问题是UI冻结。我不想那样。我能做什么?

永远不要调用
task.Wait()
task.Wait()
将同步等待任务完成。
这将冻结用户界面

您的catch块正在工作,但在捕获异常之前,您看到了异常。
取消选中复选框并重试,将触发catch块。

永远不要调用
task.Wait()
task.Wait()
将同步等待任务完成。
这将冻结用户界面

您的catch块正在工作,但在捕获异常之前,您看到了异常。

取消选中复选框并重试,将触发catch块。

不相关注意:不要使用
throw-ex。使用
throw。它将在不重置堆栈的情况下重新抛出异常。好的,谢谢你的观点!可能您已启用异常中断:转到调试/异常。。。并取消选择“公共运行时语言异常”的“抛出”列…无关注意:不要使用
throw-ex。使用
throw。它将在不重置堆栈的情况下重新抛出异常。好的,谢谢你的观点!可能您已启用异常中断:转到调试/异常。。。并取消选择“公共运行时语言异常”的“抛出”列…这是真正的SLaks,非常感谢!!我花了4个多小时来解决这个问题,非常简单。它起作用了!这个解释是合理的,但我认为永远都不会有太强的理由。
Wait
不仅同步阻塞,而且也是死锁的常见原因,并将任何错误包装在
聚合异常中
Wait
只是TPL的一个延迟(如果您正在进行同步并行编程,
Wait
是可以的);它不应与
async
code一起使用。@MgSam与任何关于编程的绝对规则一样,也会有例外。但是,正如其他人提到的,在一个程序中同时使用
Wait()
Wait
是一个非常糟糕的主意,除非你确定自己知道自己在做什么。我只能想到一种情况:等待控制台应用程序的
Main()
中的
async
方法(不能是
async
)。那么@DarfZon应该怎么做呢??我知道你在喊“永不说永不”的口号,但解决问题呢?那么Task.WaitAll()将同步等待所有线程/任务,并且?@DarfZon应该做什么?不等待任务?那么如何应对异常呢?这是真正的SLaks,非常感谢!!我花了4个多小时来解决这个问题,非常简单。它起作用了!这个解释是合理的,但我认为永远都不会有太强的理由。
Wait
不仅同步阻塞,而且也是死锁的常见原因,并将任何错误包装在
聚合异常中
Wait
只是TPL的一个延迟(如果您正在进行同步并行编程,
Wait
是可以的);它不应与
async
code一起使用。@MgSam与任何关于编程的绝对规则一样,也会有例外。但是,正如其他人提到的,在一个程序中同时使用
Wait()
Wait
是一个非常糟糕的主意,除非你确定自己知道自己在做什么。我只能想到一种情况:等待控制台应用程序的
Main()
中的
async
方法(不能是
async
)。那么@DarfZon应该怎么做呢??我知道你在喊“永不说永不”的口号,但解决问题呢?那么Task.WaitAll()将同步等待所有线程/任务,并且?@DarfZon应该做什么?不等待任务?那么如何应对异常呢?