线程之间的通信而不会杀死线程

时间:2012-07-02 16:09:40

标签: c# .net wpf multithreading

我正在创建一个WPF应用程序,其中我需要一个线程,它应该连续读取文件夹中的空文件(文件名包含pids和进程的名称以及唯一的计划名称),并且应该检查pid与系统中存在相同的进程名称,不是。

如果线程发现任何已崩溃且在系统中不存在的进程,它应该将计划名称发送到主UI线程而不退出并继续其工作。

我实施了1部分。但不知道如何实施2部分。

2 个答案:

答案 0 :(得分:5)

“发送到主线程”通常意味着使用主线程的Dispatcher,并调用InvokeBeginInvoke来编组将在主(UI)线程上运行的委托。

您可以根据需要使用此选项将“计划名称”添加回主线程的集合中。

答案 1 :(得分:0)

我会通过创建包含崩溃进程详细信息的共享集合来完成此操作。然后我会创建一个UI计时器,在设置的时间间隔内轮询集合以查看其中的内容。这个方案显然需要某种锁(可能是ReaderWriterLock)来防止从集合中读取错误。