Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 识别给定线程的位置_C#_Multithreading - Fatal编程技术网

C# 识别给定线程的位置

C# 识别给定线程的位置,c#,multithreading,C#,Multithreading,在确定感兴趣的特定线程之后,是否可以在运行时以编程方式获取其位置 换句话说,我想看看这个线程当前正在执行哪个方法: var executingThread=System.Threading.Thread.CurrentThread 我知道在VisualStudio中调试时可以在Threads窗口中找到这些信息,但我很困惑,这是否可以在代码中获得 我的目标是在长时间运行的进程中定期记录我正在监视的线程的位置。根据定义,您将引入竞争条件——当另一个线程观察到被观察线程正在执行MethodX时,它可能

在确定感兴趣的特定线程之后,是否可以在运行时以编程方式获取其位置

换句话说,我想看看这个线程当前正在执行哪个方法:

var executingThread=System.Threading.Thread.CurrentThread

我知道在VisualStudio中调试时可以在Threads窗口中找到这些信息,但我很困惑,这是否可以在代码中获得


我的目标是在长时间运行的进程中定期记录我正在监视的线程的位置。

根据定义,您将引入竞争条件——当另一个线程观察到被观察线程正在执行
MethodX
时,它可能已经移动到
MethodY
,因为它将持续运行。或者,您可以在查看时观察
MethodX
,但它大部分时间都花在
MethodY
上。你想做的事情可以通过调试器和分析器来完成——它们将是你最好的选择,也是最可靠的。

Thread。CurrentThread
将始终是在记录器决定摆脱懒散状态时进行日志记录的线程。@Dan-o:我正在使用计时器生成一个新线程,以定期监视正在执行的线程。这似乎工作得很好,足以确保线程仍然处于活动状态,但我还需要更多即使可以,也没有任何意义,当前线程将始终执行代码以确定正在运行的方法。如果你说的是另一个线程,并不是因为你试图查看一个正在执行的线程,当你从这样一个方法返回时,线程可能正在执行另一个方法。@Peter:是的,但我不想根据返回的信息做任何决定。我只是想弄清楚这根线在哪里被挂了很长一段时间。我意识到我的日志应该捕捉到这一点,我真的很好奇这是否可能,因为它可能会提供一些关于我可能缺少的东西的见解。@chris,这是一个决定:)。但说真的,根据定义,你会引入一个竞赛条件。你可以观察MethodX,但它大部分时间都在MethodY上。你想做的事情可以用去毛刺器和分析器来完成——它们将是你最好的选择,也是最可靠的。