与线小的事件处理程序例如:
myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
据推测,这增加了所述触发事件的队列进行处理。什么从队列中删除处理程序?我甚至需要考虑这个吗?
与线小的事件处理程序例如:
myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
据推测,这增加了所述触发事件的队列进行处理。什么从队列中删除处理程序?我甚至需要考虑这个吗?
因此,在所引用的例子中,我将在Signal.Set()的正上方添加 - =条目,否则与+ =版本相同。线?在我的情况下,这将是一个可以长时间运行的Windows服务的一部分,而处理程序将在一秒钟左右完成。 – Kal 2013-04-08 05:58:41
@Kal:不,“myNewLog”位于不同的范围,所以您无法在“MyOnEntryWritten”中访问它。在signal.WaitOne()之后取消订阅是有意义的(如果你想将AutoResetEvent设置为[signaled state](http://msdn.microsoft.com/en-us/library/system.threading .autoresetevent.aspx)只有一次)。 – victorph 2013-04-08 12:29:26
因为我想让事件重复发生,你是说我不应该设置 - =?这种问题将问题带回整个圈子。 – Kal 2013-04-08 15:16:43
我改变了逻辑,使行只写一次,而不是在循环内。不再需要从队列中移除事件。 – Kal 2013-04-08 18:14:28