我希望以编程方式取消订阅已连接的事件。
我想知道如何取消订阅 EndRequest
事件。
考虑到我使用的是内联代码,我不确定该怎么做。 (这是正确的技术术语吗?)
我知道我可以使用 some.Event -= MethodName
取消订阅..但我没有方法名称,在这里。
我使用内联代码的原因是因为我希望引用在事件外部定义的变量(我需要它......但感觉很臭......我觉得我需要将它传递进去)。
有什么建议吗?
代码时间..
public void Init(HttpApplication httpApplication)
{
httpApplication.EndRequest += (sender, e) =>
{
if (some logic)
HandleCustomErrors(httpApplication, sender, e,
(HttpStatusCode)httpApplication.Response.StatusCode);
};
httpApplication.Error += (sender, e) =>
HandleCustomErrors(httpApplication, sender, e);
}
private static void HandleCustomErrors(HttpApplication httpApplication,
object sender, EventArgs e,
HttpStatusCode httpStatusCode =
HttpStatusCode.InternalServerError)
{ ... }
这只是我的一些示例代码,用于处理 ASP.NET
应用程序中的错误。
注意:请不要将此变成有关 ASP.NET 错误处理的讨论。我只是在玩弄事件,并将这些事件用于一些样本研发/学习。
最佳答案
无法取消订阅该匿名代表。您需要将它存储在一个变量中并稍后取消订阅:
EndRequestEventHandler handler = (sender, e) =>
{
if (some logic)
HandleCustomErrors(httpApplication, sender, e,
(HttpStatusCode)httpApplication.Response.StatusCode);
};
httpApplication.EndRequest += handler;
// do stuff
httpApplication.EndRequest -= handler;
关于c# - 如何取消订阅此 .NET 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093168/