アクティブオブジェクトパターンの実装を探していますが、それほど多くはありません。これは私が思い付いたものです:アクティブオブジェクトパターンの.NET実装
少しより複雑なものが必要です。好ましくは.NETバージョン< = 3.5。
アクティブオブジェクトパターンの実装を探していますが、それほど多くはありません。これは私が思い付いたものです:アクティブオブジェクトパターンの.NET実装
少しより複雑なものが必要です。好ましくは.NETバージョン< = 3.5。
私はコードを見ていませんが、これはアクティブオブジェクトパターンの実装と思われます。アントンTykhyyの答えに追加
http://www.codeproject.com/KB/architecture/LongRunningActiveObject.aspx
、Reactive Extensionsの一部として利用できる.NET 3.5のためのSystem.Threading.Tasks.Taskのバージョンがあります。このバージョンには、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 = ...;
を使用し、スレッドセーフではありません。
このリンクをこのページで見たことがありますか? http://blog.gurock.com/wp-content/uploads/2008/01/activeobjects.pdf – mjcopple
学士論文は非常に興味深いですが、実装は含まれていません。 –