【发布时间】:2014-02-20 07:22:20
【问题描述】:
我有一个程序应该持续监视来自外部源 (FileSystemWatcher) 的事件,而源需要我的处理代码快速,否则我可能会丢失下一个事件。
但在任何时候我的程序都可能执行繁重的操作。
First question:
如果在繁重的操作期间引发了外部事件,我的程序会在处理事件之前完成操作吗?
Second question:
我是 Threading 的新手,所以我的主要问题是如何创建一个单独的永久线程来执行 only 来自外部源的事件处理?
我的第一种方法是,这个线程将简单地存储主代码准备访问的数据,并使用繁重的编码来处理存储的数据。
谢谢。
【问题讨论】:
-
如果我正确理解了您的问题,那么您可以做的是在引发事件时,保存事件的所有上下文,并将工作项发布到线程池,并让池线程执行繁重的工作并让原始线程非常迅速地返回到外部代码。这假设一旦返回线程,您保存的上下文不会失效。
-
你的格式很烦人。请查看选项并使用理智的东西。 stackoverflow.com/editing-help - 谢谢。 (不,格式为
code应该是标题、粗体、强调或编号列表是不合理的。)
标签: c# multithreading event-handling