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:(