我正在使用System.Threading.Thread
对象创建后台工作方法。该方法加载的数据也可以由用户在当前时间使用(必须从同一来源读取)。这就是为什么我想找到创建的Thread
并在当前数据加载期间将其暂停。
问题来了...如何找到Thread
?
我已经读过关于System.Diagnostics.Process
尝试的信息,但是它仅包含有关OS-Threads的数据。
我还必须说,开始Thread
的方法是static
,虽然有可能,但确实不需要创建对象来跟踪线程。我只是在创建一个新对象并启动它...
(new Thread(new ThreadStart(...))).Start();
我浏览了许多主题,但没有发现以下问题:
如果不是不可能的话,那么视觉工作室->线程窗口就可以接受信息!?
在此先感谢您的帮助:)
答案 0 :(得分:1)
如果确实需要暂停“读取”线程,则可以使用EventWaitHandle类让它等待信号,根据您的使用情况将其设置为“手动”或“自动重置”,开始未设置。后台线程完成对共享变量位置的写入后,可以在等待句柄上设置信号以释放停留在等待状态的“读取”线程。
如果“读取”线程有时只需要暂停,则可以使用相同的等待句柄方法,只是在“手动”复位模式下将其作为“设置”开始,而“读取”线程则在适当时对其进行检查。 “读取”线程将跳过等待信号(因为它已经设置)!
一旦您的“写入”线程需要进行更改,它将重置等待句柄,从而导致您的“读取”线程在检查信号,更新数据后暂停,然后再次“设置”信号以释放暂停的“阅读”线程。
答案 1 :(得分:0)
使用Task
进行后台工作,您可以使用Continue
方法在任务完成时处理数据。
var task = Task.Run(() => "Test");
task.ContinueWith((str) => "Process data");
或使用Name
类的Thread
属性来分配名称。