C# 活动对象模式的.NET实现

C# 活动对象模式的.NET实现,c#,.net,multithreading,design-patterns,asynchronous,C#,.net,Multithreading,Design Patterns,Asynchronous,我正在寻找活动对象模式的实现,但到目前为止还没有太多。这就是我想到的: 需要更多的参与。最好是.NET版本的请参见。我没有看过代码,但这似乎是活动对象模式的实现 除了Anton Tykhyy的答案之外,还有一个版本的System.Threading.Tasks.Task for.NET 3.5作为的一部分。请注意,此版本没有Microsoft的官方支持。使用System.Threading.Tasks.Task的简单实现 class ActiveObject : IDisposable {

我正在寻找活动对象模式的实现,但到目前为止还没有太多。这就是我想到的:


需要更多的参与。最好是.NET版本的请参见。

我没有看过代码,但这似乎是活动对象模式的实现


除了Anton Tykhyy的答案之外,还有一个版本的System.Threading.Tasks.Task for.NET 3.5作为的一部分。请注意,此版本没有Microsoft的官方支持。

使用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=如果你需要它。

我想你是从那页看到这个链接的吧?学士学位论文很有趣,但它没有包含一个实现。好的,这是一个好的。太糟糕了,我的项目正在使用.NET 3.5:(