gpt4 book ai didi

c# - 事件对象模式的 .NET 实现

转载 作者:行者123 更新时间:2023-11-30 15:45:42 25 4
gpt4 key购买 nike

我正在寻找事件对象模式的实现,但目前还没有找到太多。这是我想出的:

需要更多的参与。最好是 .NET 版本 <= 3.5。

最佳答案

使用 System.Threading.Tasks.Task 的简单实现

class ActiveObject : IDisposable
{
private Task _lastTask = Task.Factory.StartNew(() => { });

public void Dispose()
{
if (_lastTask == null)
return;

_lastTask.Wait();
_lastTask = null;
}

public void InvokeAsync(Action action)
{
if (_lastTask == null)
throw new ObjectDisposedException(GetType().FullName);

_lastTask = _lastTask.ContinueWith(t => action());
}
}

InvokeAsync 不是线程安全的,如果需要,请使用 lock (_lastTask) lastTask = ...;

关于c# - 事件对象模式的 .NET 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4945794/

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