GCHandle pinning seems to have solved the callback disposal issues