Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 安全地运行可能不稳定的代码_C#_.net_Windows Runtime_Windows 8.1 - Fatal编程技术网

C# 安全地运行可能不稳定的代码

C# 安全地运行可能不稳定的代码,c#,.net,windows-runtime,windows-8.1,C#,.net,Windows Runtime,Windows 8.1,我正在为Windows 8.1开发一个应用程序,它需要运行可能不稳定的代码,因为它可能会遇到堆栈溢出异常。我控制着这段代码,但我不可能禁止所有可能崩溃的情况,所以我更喜欢一种解决方案,以一种我可以优雅地处理潜在崩溃的方式执行这段代码 我读过AppDomains,但我在网上找到的所有内容都集中在使用受限权限运行代码或AppDomains在卸载程序集方面带来的好处。此外,实现一个服务主机以便我可以跨AppDomains进行通信,这似乎是一个巨大的过火行为。 最后,我甚至不确定Windows 8.1应

我正在为Windows 8.1开发一个应用程序,它需要运行可能不稳定的代码,因为它可能会遇到堆栈溢出异常。我控制着这段代码,但我不可能禁止所有可能崩溃的情况,所以我更喜欢一种解决方案,以一种我可以优雅地处理潜在崩溃的方式执行这段代码

我读过
AppDomain
s,但我在网上找到的所有内容都集中在使用受限权限运行代码或AppDomains在卸载程序集方面带来的好处。此外,实现一个服务主机以便我可以跨AppDomains进行通信,这似乎是一个巨大的过火行为。
最后,我甚至不确定Windows 8.1应用程序的受限运行时是否允许(a)创建AppDomains和(b)托管WCF服务或远程主机

所以我想问的是,有没有更简单的选择


[编辑:]我可能不清楚这一点,但我无法改变这些异常可能发生的事实。这对我来说很好!事实上,我已经实现了递归深度计数器和类似的措施,但它仍然认为用户拥有非常直接的控制权,并且可能引发异常
我不想禁止这样做,我想优雅地处理它。

我不是说这是正确的解决方案,也不是说你还没有尝试过,而是使用
try{}catch{}
阻止程序崩溃,而是执行你在
catch{}
块中指定的任何操作。@Ben这就是重点,try-catch无法防止堆栈溢出异常。它是不可恢复的。如果创建一个新线程,则会得到一个新堆栈。但我不能完全肯定这会对您有所帮助,因为您无法可靠地捕获StackOverflowException。“但它可能会起作用。”克里斯:嗯,我必须可靠地诊断它。另外,我不确定线程中的堆栈溢出是否会影响整个进程,但我将对此进行研究。@Kris我只是将一些线程放在一起,不幸的是,异常导致整个应用程序崩溃。