c#中的背景线程

时间:2011-06-15 17:35:53

标签: c# multithreading

我目前正在使用c#中的线程和后台工作程序。我遇到的问题是这个。假设我有一个用于用户交互的主线程和一个处理txt文件的工作线程(各种编辑操作)。然后在backgroundthread运行其内容一次后,我有一个执行另一组操作的计时器启动。我希望计时器运行的这些新操作可以在相同的后台线程中运行x分钟而不运行它在计时器启动之前运行的先前的txt相关操作。怎么办呢?

3 个答案:

答案 0 :(得分:1)

您应该使用System.Timers.Timer,它将在线程池线程上运行其回调。

运行哪个特定线程无关紧要(只要它不是UI线程) 如果由于某种原因,它确实很重要(例如,如果你使用的是单线程COM对象),那么你需要创建一个专用线程,等待使用线程安全的委托队列来完成任务。< / p>

答案 1 :(得分:0)

您希望使用事件驱动方法从UI线程对工作线程执行函数调用。实现此目的的方法是使用BeginInvoke,您可以在此处详细了解如何使用它:http://www.dreamincode.net/forums/topic/35616-cross-thread-communication-in-c%23/

答案 2 :(得分:0)

在后台工作人员的末尾添加一个while循环:

while(!stop){Thread.Sleep(yourIntervalinMilliseconds); ......}

我会在你希望它被踢出的时候创建一个停止bool的地方。