gpt4 book ai didi

C# - 如何使一系列方法调用成为原子的?

转载 作者:行者123 更新时间:2023-11-30 19:03:35 26 4
gpt4 key购买 nike

我必须在 C# 中进行一系列方法调用,这样,如果其中一个失败,则不应调用后续方法。简而言之,调用集应该是原子的。我如何在 C# 中实现这一点?

最佳答案

我认为您将“原子”一词与其他词混淆了。原子性是指操作不能被中断,通常在多线程场景中完成以保护共享资源。

您想要的是正常的控制流逻辑,解决方案取决于您的方法。

一个解决方案可能是让他们返回一个 bool 值,指示它是否成功:

bool success = false;

success = MethodA();
if (!success)
return;
success = MethodB();
if (!success)
return;

// or even like this as suggested in another answer
if (MethodA() &&
MethodB() &&
MethodC())
{
Console.WriteLine("All succeeded");
}

您还可以使用异常并将所有方法调用包装在 try-catch block 中。如果其中一个失败(抛出异常),您的 catch block 将执行,并且在 try block 中该方法调用之后的任何内容都将有机会运行。

try
{
MethodA();
MethodB();
MethodC();
}
catch (MyMethodFailedException)
{
// do something clever
}

如果您需要回滚功能,则必须进入事务,但这是一个更大的话题。

关于C# - 如何使一系列方法调用成为原子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821253/

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