Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 使用BackgroundWorker-ContextSwitchDeadlock将大量文件解压缩到临时文件夹_C#_Backgroundworker_Contextswitchdeadlock - Fatal编程技术网

C# 使用BackgroundWorker-ContextSwitchDeadlock将大量文件解压缩到临时文件夹

C# 使用BackgroundWorker-ContextSwitchDeadlock将大量文件解压缩到临时文件夹,c#,backgroundworker,contextswitchdeadlock,C#,Backgroundworker,Contextswitchdeadlock,我的代码在目录中查找.zip文件,并将它们提取到临时文件夹结构中,以便稍后删除 偶尔,我会发现ContextSwitchDeadlock被检测到错误,当我调查发生这种情况的地方时,它是在解压缩zip文件的过程中发生的 因此,我想把它转移到后台工作线程中,但我一辈子都不知道从哪里开始使用后台工作线程 任何帮助都将不胜感激 我想我需要将zipfiles列表传递到后台工作线程中,但到目前为止还没有成功 解压缩ZipFile的第一行代码是: foreach(ZipFiles中的FileInfo fz)

我的代码在目录中查找.zip文件,并将它们提取到临时文件夹结构中,以便稍后删除

偶尔,我会发现
ContextSwitchDeadlock被检测到
错误,当我调查发生这种情况的地方时,它是在解压缩zip文件的过程中发生的

因此,我想把它转移到后台工作线程中,但我一辈子都不知道从哪里开始使用后台工作线程

任何帮助都将不胜感激

我想我需要将zipfiles列表传递到后台工作线程中,但到目前为止还没有成功

解压缩ZipFile的第一行代码是: foreach(ZipFiles中的FileInfo fz) { 解压的东西 }


所以我想把整个foreach循环放在后台工作程序中(我想?

此外,这些xip文件很大,包含高达100 MBIt的crash.dmp文件。这不是错误,只是调试器生成的诊断。您可以轻松地在出现调试+异常时关闭它,打开托管调试助手节点,取消选中“ContextSwitchDeadlock”框。或者编写更好的代码,没有什么比挂断用户界面更美妙的了。只需在工作线程上运行代码,使用BackgroundWorker或Task类。您能否提供一个示例,说明如何将解压代码移动到单独的工作线程或后台工作线程中?