我想要实现的是创建一个全局任务,它可以在一次运行中执行 n 次,但它可以将对象作为参数并具有不同的值,如下所示
我有一个列表,其中包含我的全局任务将要接收的所有对象,
List<string> StringList = new List<string>();
StringList.Add("A");
StringList.Add("C");
StringList.Add("B");
StringList.Add("D");
StringList.Add("E");
StringList.Add("F");
然后我有一个委托函数列表
List<Func<string, string>> TasksList = new List<Func<string, string>>();
StringList.ForEach(c=> {
TasksList.Add(x => Push(c));
});
然后我想将此列表中的每个任务称为执行任务,我看到的是我必须设置要调用的参数,在这种情况下,我为所有任务都设置了“A”,但它需要第一次初始化这还不错,因为它是我想要的。
var resultII = TasksList.Select(c => Observable.Start(() => c("A"))).CombineLatest().Finally(() => Console.WriteLine("Done!"));
OUTPUT:
Executing C on Thread: 4
Executing A on Thread: 5
Executing B on Thread: 7
Executing D on Thread: 7
Executing E on Thread: 5
Executing F on Thread: 4
Done!
5
4
7
7
5
4
但我的问题是,还有其他方法可以做到这一点吗?每次我调用 Observable.Start 时,这些任务已经运行了吗?或者当我用 Observable.Start 调用它们时它们才开始?在不考虑首次初始化的情况下传递“A”值 (StringList.Add("A") ,StringList.Add("C")...) 是错误还是发生了什么?