iqsharp
iqsharp copied to clipboard
Make most IWorkspace APIs async
This is a draft PR that makes most public IWorkspace APIs async and removes the public Initialization task that consumers needed to await before using the workspace. The async APIs wait for initialization to complete before returning their results.
This reduces the potential for callers to consume workspace APIs prior to the workspace being fully initialized. This is a follow-up to the changes made in #331 which introduced the async initialization of the workspace.
To do:
- [ ] Fix test failures due to race conditions on startup related to assembly loading. Need to find a different mechanism for avoiding deadlocks during initialization while still guaranteeing that compilation has completed before consumers attempt to use the workspace.