C# 停止方法执行

C# 停止方法执行,c#,compact-framework,C#,Compact Framework,我有一个类尝试从web服务获取信息几次: public TResult Try(Func<TResult> func, int maxRetries) { TResult returnValue = default(TResult); int numTries = 0; bool succeeded = false; while (numTries < maxRetries) { try {

我有一个类尝试从web服务获取信息几次:

public TResult Try(Func<TResult> func, int maxRetries)
{
    TResult returnValue = default(TResult);
    int numTries = 0;
    bool succeeded = false;

    while (numTries < maxRetries)
    {
        try
        {
            returnValue = func();
            succeeded = true;
        }
        catch (Exception ex)
        {
            Log(ex,numTries);
        }
        finally
        {
            numTries++;
        }
        if (succeeded)
        {
            return returnValue;
        }
        else
        {
            if (numTries == maxRetries)
            {
                 //ask user what to do
            }
        }
  }
我当然可以检查返回值是否为null,如:

someValue = retry.Try(()=>webService.method(),maxRetries));
if (someValue == null) 
return;

但这意味着代码中会有很多变化,我想避免这种情况,最好是通过Try方法来实现。

我可以想到两件事。您可以确保TResult属于接口类型,该接口类型具有表示成功请求的布尔字段IsSuccessful或IsValid等。如果无法修改TResult,另一个选项是在try方法上使用Out参数传递另一个值。

无法停止方法的执行。不过首先想到的是抛出一个异常并从调用方法捕获它

但请记住,您永远不应该依赖异常来控制这样的流。。但是如果你真的不能重写调用方法,这可能是你唯一的选择

另一个选项可能是让返回的结果通过接口设置一个标志,通知调用方它已成功完成

someValue = retry.Try(()=>webService.method(),maxRetries));
if (someValue == null) 
return;