I found out, that you can't read AcApp.DocumentManager.MdiActiveDocument from a new thread, so I was passing the reference to the document to every method that needed to use it
But then I found out, that HostApplicationServices.WorkingDatabase allows me to access the database from a new thread.
So I'm wondering, is there any other difference, whether I access the database using AcApp.DocumentManager.MdiActiveDocument.Database or HostApplicationServices.WorkingDatabase ?
And is there some way for thread-sefe access to the active document?
AutoCAD APIs are not multithreaded safe, so you should only access the AutoCAD APIs from your main thread. This is documented in the ObjectARX helpfiles. If you want to process data on another thread, its best to extract what you need on your main thread, send it to your worker thread, and then send the result back to the main thread if you need to send something back to AutoCAD.
But to answer your question on Databases, HostApplicationServices.WorkingDatabase and MdiActiveDocument.Database will (in general) return the same Database.
Thanks for the clarification on databases.
But can you also explain why HostApplicationServices.WorkingDatabase is threadsafe? At least it works for me.
Access a broad range of knowledge to help get the most out of your products and services.
Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.
Upgrading to a 2015 product? Make sure to check these out 1st!