相关疑难解决方法(0)

任务未处理的异常

我试图了解在任务对象中引发但从未处理的异常发生了什么.

在MSDn上,据说:

如果您不等待传播异常的任务或访问其Exception属性,则在对任务进行垃圾回收时,将根据.NET异常策略升级异常.

所以我不太明白这些异常会以何种方式影响程序流程.我认为这些异常应该在垃圾收集后立即中断执行.但我无法设计这种行为.在以下代码段中,抛出的异常不会显示.

// Do something ...
Task.Run (()=> {throw new Exception("Exception in the task!");});
// Do something else
Run Code Online (Sandbox Code Playgroud)

请问,任何人都可以解释如何处理未处理的任务异常,以及它们如何影响程序流程.

c# exception task

14
推荐指数
2
解决办法
5961
查看次数

停止执行C#代码

我正在玩一些C#Winforms/WPF代码,偶然发现了一些奇怪的东西.假设我有这样的代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DoSomething();

        // maybe something more if everything went ok
    }
}
Run Code Online (Sandbox Code Playgroud)

令我困惑的是,我不能简单地在构造函数完成其工作之前从方法DoSomething关闭应用程序.如果在执行过程中出现任何问题DoSomething,我需要立即关闭应用程序,但它只是继续运行,执行部件// maybe something more...然后关闭,但这对我来说太迟了.

我必须在构造函数本身中使用以下内容放置关闭表单的代码return;然后它可以工作,但我真的没有找到一个可接受的解决方案.我试图将这样的验证逻辑从构造函数移动到我的方法.

我尝试过类似的东西

public void DoSomething()
{
    Close();
}
Run Code Online (Sandbox Code Playgroud)

要么

public void DoSomething()
{
    Application.Current.Shutdown();
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.是的,两个代码都会关闭应用程序,但仅在完成构造函数代码之后.

Why我需要这样的东西吗?好吧,因为在启动时我需要检查各种事情,比如连接和硬件的可用性,验证用户等,如果有任何失败,就没有必要执行更多的代码.

使用Winforms和WPF(因此标签)尝试相同的原理,工作原理相同.

任何人都可以提供解释或解决方案吗?

c# wpf winforms

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

标签 统计

c# ×2

exception ×1

task ×1

winforms ×1

wpf ×1