C#查找托管线程

时间:2018-10-02 10:17:01

标签: c# multithreading

我正在使用System.Threading.Thread对象创建后台工作方法。该方法加载的数据也可以由用户在当前时间使用(必须从同一来源读取)。这就是为什么我想找到创建的Thread并在当前数据加载期间将其暂停。

问题来了...如何找到Thread

我已经读过关于System.Diagnostics.Process尝试的信息,但是它仅包含有关OS-Threads的数据。 我还必须说,开始Thread的方法是static,虽然有可能,但确实不需要创建对象来跟踪线程。我只是在创建一个新对象并启动它...

(new Thread(new ThreadStart(...))).Start();

我浏览了许多主题,但没有发现以下问题:

如果不是不可能的话,那么视觉工作室->线程窗口就可以接受信息!?

在此先感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

如果确实需要暂停“读取”线程,则可以使用EventWaitHandle类让它等待信号,根据您的使用情况将其设置为“手动”或“自动重置”,开始未设置。后台线程完成对共享变量位置的写入后,可以在等待句柄上设置信号以释放停留在等待状态的“读取”线程。

如果“读取”线程有时只需要暂停,则可以使用相同的等待句柄方法,只是在“手动”复位模式下将其作为“设置”开始,而“读取”线程则在适当时对其进行检查。 “读取”线程将跳过等待信号(因为它已经设置)!

一旦您的“写入”线程需要进行更改,它将重置等待句柄,从而导致您的“读取”线程在检查信号,更新数据后暂停,然后再次“设置”信号以释放暂停的“阅读”线程。

答案 1 :(得分:0)

使用Task进行后台工作,您可以使用Continue方法在任务完成时处理数据。

var task = Task.Run(() => "Test");
task.ContinueWith((str) => "Process data");

或使用Name类的Thread属性来分配名称。