я начинаю несколько параллельных задач от PCL сПолучить информацию о нити в Xamarin PCL
Parallel.Invoke(() => ExecuteTaskAAsync(),() => ExecuteTaskBAsync());
Теперь я хочу знать, на какой нить эти задачи выполняются.
Thread.CurrentThread.ManagedThreadId
, похоже, доступен только в iOS и проекте Droid, но не в проекте PCL или UWP. Каковы мои возможности? Если я буду использовать DependencyService
, я также не буду знать, на каком потоке TaskA запущен, потому что нет никакой связи между запущенной задачей и DependencyService
.
Как я могу получить информацию о потоке (id, name, ...) в PCL?
Когда вы устанавливаете точку останова, вы можете попасть в Tasks Window и получить дополнительную информацию. Также у вас есть выпадающее меню, чтобы выбрать процесс, выбрать один из разных потоков и получить некоторую информацию о фрейме стека. Так можно также получить эту информацию в коде?
Edit:
Кажется, что информация в окне Задачи доступна только при работе на UWP.
Является ли явным идентификатором потока действительно требование? Если нет, вы можете проверить «SynchronizationContext.Current» и проверить, соответствуют ли они какой-либо сохраненной ссылке. –
Нет, это не так. Я хочу включить в файл журнала информацию о потоках, чтобы узнать, что из этого потока. С вашим сравнительным подходом я могу только увидеть, является ли это нелиний пользовательский интерфейс? В моем примере приложение 'SynchronizationContext' было' null'. – testing
Вы можете установить TracePoints в Visual Studio, где вы можете вывести идентификатор потока в окно отладки. –