Jinoh Kang (@iamahuman) commented about dlls/windows.media.speech/recognizer.c:
- *action = NULL;
- EnterCriticalSection(&impl->cs);
- if (impl->worker_running && impl->worker_thread)
impl->worker_running = FALSE;
- else
invalid_state = TRUE;
- LeaveCriticalSection(&impl->cs);
- WakeConditionVariable(&impl->cv);
- if (invalid_state)
hr = COR_E_INVALIDOPERATION;
- else
hr = async_action_create((IInspectable *)iface, session_stop_async, action);
You cannot perform a long-running operation inside a threadpool work unless you call `CallbackMayRunLong`.