C# 在单独的线程c中观看事件#
我有一个程序,可以一直监视来自外部源(C# 在单独的线程c中观看事件#,c#,multithreading,event-handling,C#,Multithreading,Event Handling,我有一个程序,可以一直监视来自外部源(FileSystemWatcher)的事件,源代码需要我快速处理代码,否则我可能会丢失下一个事件 但在任何时候,我的程序都可能执行一个繁重的操作 First question: 如果在繁重的操作期间引发外部事件,我的程序是否会在处理事件之前完成操作 Second question: 我是线程新手,所以我的主要问题是如何创建一个单独的永久线程,只执行外部源的事件处理? 我的第一种方法是,这个线程将简单地存储主代码访问的数据,然后使用繁重的编码来处理存储的
FileSystemWatcher
)的事件,源代码需要我快速处理代码,否则我可能会丢失下一个事件
但在任何时候,我的程序都可能执行一个繁重的操作
First question:
如果在繁重的操作期间引发外部事件,我的程序是否会在处理事件之前完成操作
Second question:
我是线程新手,所以我的主要问题是如何创建一个单独的永久线程,只执行外部源的事件处理?
我的第一种方法是,这个线程将简单地存储主代码访问的数据,然后使用繁重的编码来处理存储的数据
谢谢。事件将在触发事件的线程上运行。如果您的应用程序正在执行昂贵的操作,并且事件是从另一个线程启动的,那么这两件事是独立的,以避免两个线程之间的同步
如果您通过对事件进行极化来处理事件,则一个活动将阻止下一个活动
在不知道您正在处理哪些事件以及如何引发这些事件的情况下,这只是最一般的建议
---编辑
对
您是否阅读过有关async和Wait的内容?如果我正确理解了您的问题,那么您可以做的是在引发事件时,保存事件的所有上下文,将工作项发布到线程池中,让线程池执行繁重的工作,并让原始线程快速返回外部代码。这假设您保存的上下文不会在线程返回后失效。您的格式设置非常烦人。请看一下选项并使用一些理智的方法非常感谢。(不,格式化为code
标题、粗体、强调或编号列表是不合理的。)引发事件的是文件系统监视程序。你的意思是我不需要担心,因为事件已经在一个单独的线程(FileSystemWatcher线程)中处理了???