在单独的线程中观察事件c#

时间:2014-02-19 23:03:26

标签: c# multithreading event-handling

我有一个程序应该继续观察来自外部源(FileSystemWatcher)的事件,并且源需要我的处理代码快,否则我可能会丢失下一个事件。

但是我的程序可能会在任何时候执行繁重的操作。

First question: 

如果在繁重操作期间引发外部事件,我的程序会在处理事件之前完成操作吗?

Second question:

我是Threading的新手,所以我的主要问题是我如何创建一个单独的永久线程来从外部源处理事件处理only? 我的第一种方法是,这个线程只需在主代码准备就绪时存储要访问的数据,并使用繁重的编码来处理存储的数据。

谢谢。

1 个答案:

答案 0 :(得分:1)

该事件将在触发事件的线程上运行。如果你的应用程序正在执行一项昂贵的操作并且该事件从另一个线程启动,则这两个事物是独立的,以免两个线程之间的同步。

如果您通过对其进行处理来处理事件,则一个活动将保留下一个事件。

在不知道您正在处理哪些事件以及如何处理它们的情况下,这只是最通用的建议。

---编辑

Does FileSystemWatcher create its own thread?