gpt4 book ai didi

c# - 如何检查线程代码是否在 try-catch block 中运行

转载 作者:行者123 更新时间:2023-11-30 18:07:53 26 4
gpt4 key购买 nike

我想验证我们的代码并检查我们执行的每个线程是否都在 try catch block 中运行。

有效样本:

Thread loadDataThread = new Thread(new ThreadStart(LoadData));
public void LoadData()
{
try {/*do something*/}
catch(Exception ex) { /*Handle exception*/ }
}

无效样本:

Thread loadDataThread = new Thread(new ThreadStart(LoadData));
public void LoadData()
{
/* do something */
}

这是否可以使用 FxCop 或其他工具进行验证。类似的规则可以应用于其他一些事情,例如。计时器滴答声等...

最佳答案

参见 http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/a257a910-126e-4c8d-aab3-3199347346ec有关如何在 FxCop 规则中检测包装 try/catch block 的示例。实际上更棘手的是检测哪些方法容易从后台线程运行,因为它们并非都使用明显的启动器(如 Thread.Start 或 ThreadPool.QueueUserWorkItem)生成。

也就是说,您可能需要重新考虑将您的方法从添加包装 try/catch 切换为使用为您添加 try/catch 的自定义线程启动器。 (然后您可以创建一个 FxCop 规则来验证是否正在使用自定义启动器/助手而不是基本框架类似物。)这将具有允许您系统地将其他更改应用于所有线程的优势(例如:设置文化,跟踪启动堆栈跟踪以用于以后的异常日志记录等),而无需更改从生成的线程运行的所有方法。

关于c# - 如何检查线程代码是否在 try-catch block 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3708503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com