gpt4 book ai didi

c# - 可以要求我的事件的处理程序立即返回吗?

转载 作者:行者123 更新时间:2023-11-30 14:31:23 28 4
gpt4 key购买 nike

我正在编写 .NET 库。其中一个类具有库用户需要订阅的事件。要求这些事件的处理程序实现快速返回是否可以?或者这是一个有通用解决方案的常见问题?

(如果处理程序花费很长时间,这不会是致命的 - 但如果他们的处理程序花费的时间超过半秒,事情就会开始出错 - 它是一个网络库,连接的对等点会认为这个对等点已经在事件发生时掉线了在发送回复的同一线程上)

例如

public delegate void Ping();

class A
{
/// <summary>
/// If your handler doesn't return quickly... I am going to cry.
/// </summary>
public event Ping Ping;

private void RaisePing()
{
var handler = Ping;
if(handler != null)
handler();
}

// this is called several times a secound
private void MainLoop()
{
if(something)
RaisePing();

// time important stuff - musn't take long to get here...
}
}

最佳答案

Is it OK to ask handlers of my events return immediately?

是的。

您应该在您的文档中明确声明,如果订阅者没有及时返回,该库将无法正常工作。

你不应该强制执行它

为什么?因为你说你正在开发一个库。与框架相反,库让用户处于控制之中。因此,用户决定在订阅您的事件时做他们想做的事。

强制处理程序快速只会增加复杂性,使库更难使用。这就是为什么我认为最好明确预期,如果用户由于处理速度慢而遇到问题,只需让用户引用文档。

关于c# - 可以要求我的事件的处理程序立即返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326693/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com