如何将变量传递给Action?

时间:2013-10-15 08:32:23

标签: c# queue action

下面是代码示例,我希望队列中的组件采用局部变量“entity”,我该如何实现? THX

private void DoComparison(StuffEntity entity)
    {
        try
        {
            bool dataFlag = CheckIsNewData(entity.PickingTime, entity.WarningPeriod);
            if (dataFlag)  
            {
                Queue<Action<StuffEntity>> queue = new Queue<Action<StuffEntity>>();
                //How can I let the queue stuff take the entity?
                queue.Enqueue(DelaySendingMessageOut);
                if (!QueueItem.ContainsKey(entity.FridgeID))
                {
                    QueueItem.Add(entity.FridgeID, queue);
                }
            }
        }
        catch (Exception ex)
        {
            CommonUnity.WriteLog(ex.Message);
            CommonUnity.WriteLog(ex.StackTrace);
        }
    }

    private void DelaySendingMessageOut(StuffEntity entity)
    {
        int pendingPeroid = entity.PendingTime.ToInt();
        if (pendingPeroid <= 0)
            pendingPeroid = 5;  

        Thread.Sleep(pendingPeroid * 60 * 1000); 
        TriggerCheckingBeforeSendMessageOut(entity);
    }

1 个答案:

答案 0 :(得分:0)

queue.Enqueue((e) => DelaySendingMessageOut(entity));

但您可以使用Queue<Action>,因为您不会使用参数e

Queue<Action> queue = new Queue<Action>();
queue.Enqueue(() => DelaySendingMessageOut(entity));
相关问题