作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在处理Windows服务(.net 4.0)中大文件的处理和上传。处理和上传步骤可能需要几分钟才能完成。管理员可以直接在数据库中将作业标记为已取消,但要清除内存队列中的作业则需要重新启动服务。目标是放弃该作业并在不重新启动服务的情况下选择队列中的下一个作业。这是我想做的:
在主入口点,启动两个任务:
Task processTask = Task.Factory.StartNew(ProcessJob);
Task monitorTask = Task.Factory.StartNew(MonitorDB);
最佳答案
您可以通过BlockingCollection<T>
在监视线程和主线程之间进行通信。
这是我写的一个简单示例。
BlockingCollection<string> queue =
new BlockingCollection<string>();
// monitor thread.
Task.Factory.StartNew(() =>
{
while (true)
{
Thread.Sleep(1000);
queue.Add("event occured.");
}
});
// main thread.
while (true)
{
// blocks when no messages are in queue.
string message = queue.Take();
// kill process thread here.
}
关于c# - 将异常或消息从线程/任务传递到主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819358/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!