我一直在努力解决这个问题。在C#中管理定时线程.net
在我的网站上,用户被要求参加测试。当他提交一个答案时,我会调用一个WCF服务,将他的数据推送到数据库中。这很简单,但随着用户数量的增加,确实会变得数据库密集。
因此,为了提高性能(以避免重调用到DB),我有 -
一个。在服务中实施缓存。
b。实现线程(用于异步工作) - 将缓存数据推送到数据库。
所以,现在,每当有一个呼叫保存答案来了,它在服务缓存存储数据。同时,我运行一个线程(因为我只想将数据推送到数据库一次 - 在用户测试结束时 - 并将临时答案数据添加到缓存中),然后返回该呼叫,因为我不想要用户不断等待。我运行的线程必须有15分钟的超时时间。如果用户在15分钟内未提交任何答案,则应将缓存的结果保存到数据库。直到现在,它很简单,并设法做到这一点。
我在哪里卡住的是,如果用户发送的一些答案,就会调用这些15分钟内的服务进行,该线程超时应复位到下一个15分钟。所以,它的一个线程滑动计时器。
我用Google搜索了很多,但似乎没有办法跟踪线程。而且,如果我在每个保存数据请求上创建一个新线程,那么它只会在数据库上重现相同的负载。
我觉得,如果可能会有一些方法来跟踪我第一次开始线程,并相应地操纵它,我就能达到预期的事情。
请指教并提出建议。
紧迫感和感谢
SV
你如何计划线程超时?你会阻止线程15分钟吗?你确定数据库写入是你的瓶颈,你有没有测量? – 2010-12-07 07:16:50