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,但找不到一种方法来发出取消的信号