首页 > 解决方案 > 中断方法 C#

问题描述

C# 中有没有办法通过条件中断方法,而不在每一行之后手动检查条件?

manuelly 看起来像这样:

function(){
i++;
condition okay?;
i = i + 2;
condition okay?;
i = i + 3;
condition okay?;
.....
}

标签: c#returninterrupt

解决方案


C# 有自己的机制来取消长时间运行的进程:CancellationToken 结构。提供的链接有一个例子。另外,您可以自行搜索“.net canceltoken”。

要监控的关键属性是布尔IsCancellationRequested。那个样子也有一个简单的例子。

请务必了解您的长期运行方法需要检查此标志以决定要做什么。您可以决定使用ThrowIfCancellationRequested方法突然取消。但是,如果您打开了一次性对象,您将需要优雅地取消该方法。

另一个很好的链接是:托管线程中的取消

它解释了CancellationTokenSourceCancellationToken. 您的长期运行方法应该只接受一个CancellationToken. 您的调用方法可能有一个CancellationTokenSource,您将调用它的Cancel方法或CancelAfter方法来与传递的您希望取消的令牌进行通信。

CancelAfter方法是对长时间运行的方法设置时间限制的好方法。

CancellationToken许多人会在他们的方法签名中使用可空值。示例:LongRunningMethod(CancellationToken? token = null)。虽然这可行,但我认为最好使用CancellationToken.None LongRunningMethod(CancellationToken token = default(CancellationToken),它返回一个空的CancellationToken.None


推荐阅读