【发布时间】:2016-10-24 19:25:29
【问题描述】:
所以我在这个 Web 服务中确实有 1 行代码,它应该启动一个可以完成大量工作的桌面应用程序。我选择了桌面应用程序,因为这项工作可能需要 20 多个小时,如果我只选择一个 Web 服务,应用程序池回收计划可能会给我带来一个曲线球。
这是我的网络服务
Process.Start("C:\ReTransPrograms\RateAnalytics\AnalyticsBatchRateDesktop.exe", arguments)
在桌面应用程序(winforms)中工作完成后,在后台worker完成事件中,我试过了...
Application.Exit()
和..
me.close()
当我在工作完成后检查任务管理器时,应用程序仍在运行。我错过了什么吗?权限?安全吗?
当我在本地运行桌面应用程序时,它会在完成后正常关闭。
AppPool 正在作为 LocalSystem 运行。
【问题讨论】:
-
应用程序池非常受限于 Web 服务运行的目录。因此,如果您的应用程序正在写入文件夹或注册表,它可能会卡住。使用 sysinternal 进程应用程序诊断
-
最好创建一个 Windows 服务来进行处理,并通过某种方式查询它以获取关于它已经走了多远/预期剩余时间的某种度量标准。然后,您可以创建某种方式为 Windows 服务提供工作。
-
我想到了那个 Andrew,但我需要从 Web 服务启动的这个程序的多个实例
-
只写入 SQL 数据库。我确实确保它具有对 SQL 数据库的权限。整个应用程序运行良好,但完成后不会关闭。
-
@TeddyHiggins Windows 服务可以为每个任务实例启动一个新线程(或任务)。
标签: .net vb.net winforms web-services