Я как то встречал возможность выполнить код, вклинившись в работающий Thread. Но не могу вспомнить как это делалось. Суть та же что и для Dispatcher.Invoke() или Dispatcher.BeginInvoke(), но для Thread
Метод Init() не завершится, пока не будет вызван BeginInvokeShutdown();
private void Init()
{
Thread workerThread = new Thread(new ParameterizedThreadStart(DoWork));
workerThread.IsBackground = true;
workerThread.Start(Dispatcher.Current);
Dispatcher.Run();
// Once shutdown you cannot restart the dispatcher in this appdomain
}
void DoWork(object startArg)
{
Dispatcher targetDispatcher = startArg as Dispatcher;
if(targetDispatcher == null) {
// Log error
return;
}
while(working)
{
targetDispatcher.BeginInvoke(....);
}
targetDispatcher.BeginInvokeShutdown(...);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости