C# 使用BackgroundWorker-ContextSwitchDeadlock将大量文件解压缩到临时文件夹
我的代码在目录中查找.zip文件,并将它们提取到临时文件夹结构中,以便稍后删除 偶尔,我会发现C# 使用BackgroundWorker-ContextSwitchDeadlock将大量文件解压缩到临时文件夹,c#,backgroundworker,contextswitchdeadlock,C#,Backgroundworker,Contextswitchdeadlock,我的代码在目录中查找.zip文件,并将它们提取到临时文件夹结构中,以便稍后删除 偶尔,我会发现ContextSwitchDeadlock被检测到错误,当我调查发生这种情况的地方时,它是在解压缩zip文件的过程中发生的 因此,我想把它转移到后台工作线程中,但我一辈子都不知道从哪里开始使用后台工作线程 任何帮助都将不胜感激 我想我需要将zipfiles列表传递到后台工作线程中,但到目前为止还没有成功 解压缩ZipFile的第一行代码是: foreach(ZipFiles中的FileInfo fz)
ContextSwitchDeadlock被检测到
错误,当我调查发生这种情况的地方时,它是在解压缩zip文件的过程中发生的
因此,我想把它转移到后台工作线程中,但我一辈子都不知道从哪里开始使用后台工作线程
任何帮助都将不胜感激
我想我需要将zipfiles列表传递到后台工作线程中,但到目前为止还没有成功
解压缩ZipFile的第一行代码是:
foreach(ZipFiles中的FileInfo fz)
{
解压的东西
}
所以我想把整个foreach循环放在后台工作程序中(我想?此外,这些xip文件很大,包含高达100 MBIt的crash.dmp文件。这不是错误,只是调试器生成的诊断。您可以轻松地在出现调试+异常时关闭它,打开托管调试助手节点,取消选中“ContextSwitchDeadlock”框。或者编写更好的代码,没有什么比挂断用户界面更美妙的了。只需在工作线程上运行代码,使用BackgroundWorker或Task类。您能否提供一个示例,说明如何将解压代码移动到单独的工作线程或后台工作线程中?