检查线程是否存活
对于一个任务,可能需要很长时间才能完成,我想要一种机制
- 来启动任务
- 返回用户界面(它的网页)
- 定期/随机检查任务是否完成,
- 时取消正在执行的任务
- 当用户希望 任务完成/失败时通知
可能的解决方案是什么?
线程? 启动一个线程,保存它的ManagedThreadId,(可以通过它的id获取一个线程)
写一个windows服务, 通过共享对象/文件/数据库将请求发送到服务? 保持以相同的方式与服务交互(对象/文件/数据库等) 服务?
for a task, potentially taking too long to complete, I'd like a mechanism
- to start the task
- return back to user interface (its a web page)
- periodically/randomly check if the task is complete
- cancel the executing task when user wishes so
- get notified when the task completes / fails
what are the possible solutions?
Threads?
Start a thread, save its ManagedThreadId, (can you get a thread by its id)write a windows service,
send the request to service via shared objects/files/db?
keep interacting with the service the same way (objects/files/db,etc)
Services?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Windows 服务中托管 WCF 服务,该服务将通过添加/读取队列来执行后台任务,该队列可以使用 MSMQ 或在数据库中维护。
当您添加要处理的项目时;你应该得到一个任务ID。然后,您应该能够根据任务 ID 在 db 中记录任务的完成/失败/取消状态。
您可以在 WCF 合约中使用以下方法
Host a WCF Service in a Windows Service that will perform the background tasks by adding/reading from a queue which can be maintained either using MSMQ or in a database.
When you add an item for processing; you should get a task id. You should be able to then log the completion/failed/cancel status of the task in db against the task id.
You can have following methods in your WCF contract
你可以在单个进程中做到这一点
查看任务并行库和/或 TPL DataFlow
http://msdn。 microsoft.com/en-us/library/dd460717.aspx
http://go.microsoft.com/fwlink/?LinkId=205053
You can do that in single process
Have a look at the Task Paralell Library and / or TPL DataFlow
http://msdn.microsoft.com/en-us/library/dd460717.aspx
http://go.microsoft.com/fwlink/?LinkId=205053