0

我有一个处理一些输入的慢速函数。当函数被大量调用时,白天会有高峰时间。我不希望这在消费者方面引入滞后。因此,我希望该函数将输入添加到队列中,然后返回 true,而不是让这个函数完成它的工作然后返回 true。然后我希望队列在后台处理,直到它为空。

您能告诉我在 C# 中执行此操作的最佳方法吗?

这是我开始使用的一些示例代码:

namespace WCFServiceWebRole1
{
    public class Service1 : IService1
    {
        public bool SlowFunction(string input)
        {
            // Here is a slow function that processes input...
            return true;
        }

    }
}

namespace WCFServiceWebRole1
{
    public class Service1 : IService1
    {
        public bool SlowFunction(string input)
        {
            AddToQueue(input);
            return true;
        }
    }
}
4

1 回答 1

0

您可以使用命名空间ConcurrentQueue中的类System.Collections.Concurrent这是MSDN上对其描述的链接。这将使实现生产者-消费者队列模式变得非常容易。

让你的SlowFunction方法调用Enqueue类,然后让一个System.Timers.Timer对象定期运行一个方法TryDequeue。如果您有一些非常奇怪的用例,您可以选择使用System.Threading.Timer或计划任务命中另一个服务调用。

于 2013-08-21T21:31:10.260 回答