在其自己的线程中使用回调调用队列方法
本文关键字:回调 调用 队列 方法 自己的 线程 | 更新日期: 2023-09-27 18:18:53
问类似的问题(感谢答案)后,我想添加另一个功能队列,但不幸的是,我不知道如何实现这一点:我想添加一个可选的回调到每个添加的函数。该回调函数应该在给定函数完成时调用。如何添加此功能?
不要创建一个BlockingCollection<Func<object>>
,而是创建一个类来保存要执行的函数和可选的回调:
class QueueItem
{
public Func<object> FuncToExecute { get; set; }
public Action OptionalCallback { get; set; }
}
将项目添加到队列的方法变为:
void AddFunction(Func<object> functionToAdd, Action callback = null)
{
Queue.Add(new QueueItem(functionToAdd, callback);
}
当你取消一个项目的队列时,执行该函数,如果它不为空,则调用回调函数:
public void ProcessQueue()
{
QueueItem item;
while (!IsCancelled && queue.TryTake(out item, Timeout.Infinite))
{
item.FuncToExecute();
if (item.OptionalCallback != null)
{
item.OptionalCallback();
}
}
}
以上假设您正在使用我在回答您的链接问题时推荐的模型。