gpt4 book ai didi

c# - 在 Xamarin PCL 中获取线程信息

转载 作者:太空狗 更新时间:2023-10-30 01:32:25 25 4
gpt4 key购买 nike

我从 PCL 开始一些并行任务

Parallel.Invoke(() => ExecuteTaskAAsync(), () => ExecuteTaskBAsync());

现在我想知道这些任务在哪个线程上运行。

Thread.CurrentThread.ManagedThreadId 似乎只能在 iOS 中使用和 Droid 项目,但不在 PCL 或 UWP 项目中。我的可能性是什么?如果我使用 DependencyService,我也不知道 TaskA 在哪个线程上运行,因为启动的任务和 DependencyService 之间没有关系。

如何在 PCL 中获取线程信息(id、名称...)?

当你设置断点时,你可以进入Tasks Window并获得更多信息。此外,您在顶部还有一个下拉菜单来选择一个进程,在不同的线程之间进行选择并获取有关堆栈帧的一些信息。那么应该也能够在代码中获取此信息?

编辑:

任务窗口中的信息似乎只有在 UWP 上运行时才可用。

最佳答案

Windows Universal Apps 中完全没有线程的概念,建议使用任务而不是线程。

我还没有找到有关其背后原因的官方文档,但正在进行讨论 at the CoreFX's github repo .

因此,如果您想支持 UWP 项目,您正在寻找的东西目前似乎是不可能的。

您也可以寻找 TaskScheduler管理当前正在运行的任务:

var poolId = TaskScheduler.Current.Id;

如果您的方法在同一个线程池 上运行(例如:它们在任何后台线程或 UI 线程上执行),您至少可以通过这种方式查明。

据我所知,要找到 UI 的 TaskScheduler,您必须调用 TaskScheduler.Current.Id当您在 UI 线程上时,只需将其存储在一个变量中。

关于c# - 在 Xamarin PCL 中获取线程信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37321945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com