If you have the MonoObject pointer stored in a stack variable, and assuming the Mono runtime is aware of your thread, then yes it is safe. If the pointer is in static or heap-allocated memory, then the object may be moved or freed.