【问题标题】:Visual Studio standalone .exe - background worker doesn't do its jobVisual Studio 独立 .exe - 后台工作人员不工作
【发布时间】:2015-06-29 14:12:31
【问题描述】:

我有一个程序可以将.zip 文件从一个目录复制到另一个目录并解压缩。我为此使用后台工作人员。

现在程序在使用 Visual Studio 开始按钮启动或直接从Debug/program.exe 双击时可以工作,但是当我将此.exe 文件复制到其他地方时,它开始在主线程上正确执行一些操作,但后台工人似乎没有工作。

有人知道发生了什么吗?

【问题讨论】:

  • 您使用的是第三方dll吗?检查你的输出目录,确保你没有忘记用你的 exe 复制任何 dll。
  • 您的应用程序是否需要您在 VS 的调试部分中提供但在应用程序调用中不需要的任何输入参数?
  • 因为当你将它复制到另一个地方时它不起作用我会检查你可以使用的相对路径。在带有日志记录异常的工作线程中使用 try/catch 也可以解决问题
  • 您是否尝试过使用 Visual Studio 调试副本?你是复制整个/Debug 文件夹,还是只复制.exe

标签: c# visual-studio visual-studio-2012 exe


【解决方案1】:

自我提醒:始终记住第三方.dll 文件。我的输出目录中没有它们,因此程序无法运行。谢谢@KoBE。

【讨论】:

    【解决方案2】:

    看起来主线程完成了,而后台线程没有完成他的工作。我认为您需要在主线程中等到后台线程完成。您可以使用同步对象,例如手动/自动重置事件。 方案很简单: 1.在主线程中你启动一些后台线程 2.在主线程完成之前,要等到后台线程完成工作 3.后台线程完成后,主线程也可以完成

    在调试模式下,由于主线程的延迟和断点,后台线程有足够的时间完成他的工作

    【讨论】:

    • 这似乎不太可能,因为代码在 VS 中运行或从 Debug 文件夹运行时。
    • 更简单 - 只需检查工作人员的状态和事件。此功能已提供。尽管编码错误、缺少 dll 等,但这些都无济于事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2014-04-14
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多