I'm using Application Insight to log information and exceptions. When we use _telemetryClient.TrackTrace("Message")
is this a background process or will block the thread until it is done?
Telemetry is internally buffered and send periodically in a non-blocking manner:
ServerTelemetryChannel stores arriving items in an in-memory buffer. The items are serialized, compressed, and stored into a Transmission instance once every 30 seconds, or when 500 items have been buffered. A single Transmission instance contains up to 500 items and represents a batch of telemetry that's sent over a single HTTPS call to the Application Insights service.
(source)
Of course creating any telemetry has a small impact on the performance. But it shouldn't be noticable.