Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在单独的线程c中观看事件#_C#_Multithreading_Event Handling - Fatal编程技术网

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线程)中处理了???