C# 当两个Func已连接时,防止执行第二个Func

C# 当两个Func已连接时,防止执行第二个Func,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,让我们以下面的例子为例: public void Configure(IApplicationBuilder app) { RequestDelegate a = async (ctx) => { if (1 == 1) { ctx.Response.StatusCode = 500; await ctx.Response.Writ

让我们以下面的例子为例:

    public void Configure(IApplicationBuilder app)
    {
        RequestDelegate a = async (ctx) =>
        {
            if (1 == 1)
            {
                ctx.Response.StatusCode = 500;
                await ctx.Response.WriteAsync("I'm done");
                return;
            }
        };
        RequestDelegate b = async (ctx) => await ctx.Response.WriteAsync("Please don't hit this"); ;

        RequestDelegate c = a += b;

        app.Run(c);
    }
由于两个FUNC已与
c
变量连接,因此将执行这两个FUNC。我想尝试做的是在第一个func中发出信号,表示我不希望第二个func被执行,它应该像在第一个func中一样返回HttpResponse


显然,在这个简单的例子中,我可以使用一个全局布尔值等,但这不是我要说的,如果你有两个函数连接在一起,可能来自两个独立的lib,有没有办法让第二个函数在你无法控制执行时不执行,您所知道的是,funcs将由您无法控制的其他程序执行。

您是说
a
b
都在外部库中,无法修改,但实际上您可以控制
c
?如果第一次调用a,您是否要求b不执行?如果
a
抛出异常,
b
将不会执行。@hometoos不,因为
b
不会基于布尔值或
a
@TravisJ的返回值执行。我想知道是否可以在第一个func上以某种方式取消http请求。我看到有一个HTTPContext.RequestAborted,但找不到一种方法来发出取消的信号