检查线程是否存活

发布于 2024-12-11 09:40:41 字数 369 浏览 0 评论 0原文

对于一个任务,可能需要很长时间才能完成,我想要一种机制

  1. 来启动任务
  2. 返回用户界面(它的网页)
  3. 定期/随机检查任务是否完成,
  4. 时取消正在执行的任务
  5. 当用户希望 任务完成/失败时通知

可能的解决方案是什么?

  1. 线程? 启动一个线程,保存它的ManagedThreadId,(可以通过它的id获取一个线程)

  2. 写一个windows服务, 通过共享对象/文件/数据库将请求发送到服务? 保持以相同的方式与服务交互(对象/文件/数据库等) 服务?

for a task, potentially taking too long to complete, I'd like a mechanism

  1. to start the task
  2. return back to user interface (its a web page)
  3. periodically/randomly check if the task is complete
  4. cancel the executing task when user wishes so
  5. get notified when the task completes / fails

what are the possible solutions?

  1. Threads?
    Start a thread, save its ManagedThreadId, (can you get a thread by its id)

  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感性不性感 2024-12-18 09:40:41

在 Windows 服务中托管 WCF 服务,该服务将通过添加/读取队列来执行后台任务,该队列可以使用 MSMQ 或在数据库中维护。

当您添加要处理的项目时;你应该得到一个任务ID。然后,您应该能够根据任务 ID 在 db 中记录任务的完成/失败/取消状态。

您可以在 WCF 合约中使用以下方法

int ProcessItem(ItemDetails details); // returns task id
bool CancelTask(int taskID); // returns true if successfully cancelled; false otherwise
TaskStatus GetTaskStatus(int taskID); // returns Cancelled, Waiting, Failed or Completed

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

int ProcessItem(ItemDetails details); // returns task id
bool CancelTask(int taskID); // returns true if successfully cancelled; false otherwise
TaskStatus GetTaskStatus(int taskID); // returns Cancelled, Waiting, Failed or Completed
梦里寻她 2024-12-18 09:40:41

你可以在单个进程中做到这一点
查看任务并行库和/或 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文