AsproSet Links
Download source code:

AsproSet - Unmanaged Memory for .Net

The .Net framework has certainly eliminated a large class of memory issues, but in the rush to simplify memory management and code security a large class of useful memory manipulation techniques has fallen by the wayside. In particular, we at Asprosys have found that this 'throwing out of the baby with the bath water' has crippled C# (and .Net in general) in the development of advanced system service software. AsproSet is our small contribution to reclaiming the system software space for .Net.

Have you ever needed to share data between two applications? You probably used Remoting or WCF even though both applications were on the same machine and always would be. For most of these cases you were probably using the right approach but for a small but significant number using shared memory would have been not only the superior method, but far superior.

Have you ever needed to use a small subset of a huge data space? Not too many people do but in the small but significant number of cases where this is necessary (e.g. a spreadsheet type application) you probably allocated a huge array even when only a small portion of it was needed or maybe used a dynamic structure like a list and then jumped through hoops to ensure proper indexing and processing. In either case the large performance penalty would not have been necessary if you could have used a sparse array.

Have you ever used a very large set of data that ended up clogged up in the large object heap? Again, not too many situations lead to this problem but when you have it what would give for a deterministic disposal of the large object?

They may be small in number but there are significant scenarios where better access to the many memory management facilities of the underlying operating system would provide far superior solutions to performance, reliability or architectural problems.

There was no reason to leave many of the elements supported by the AsproSet library out of the .Net Framework other than time and perceived need. Now there is no reason to have to awkwardly section out portions of an application to C++ code in order to take advantage of the numerous high performance options provided by the underlying operating system.
For the next release of AsproSet the plan is to improve the docmentation and examples, as well as to add support for shared dynamic collections such as lists, queues, etc. In the mean time we are always open to suggestions so if you have a feature request post it on the AsproTools Discussion Board.