gpt4 book ai didi

c# - 检查线程是否存活

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:04 24 4
gpt4 key购买 nike

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

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

有哪些可能的解决方案?

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

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

最佳答案

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

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

您可以在您的 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

关于c# - 检查线程是否存活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com