gpt4 book ai didi

c# - 在同步模式下执行不同的 Action

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:35 25 4
gpt4 key购买 nike

我想创建一个用于操作管理的辅助类。

假设我们有一组方法,例如:

void MyMethod(type1 param1, type2 param2, ..., Action finishedCallback);

我想创建一个以同步方式执行给定方法的类。

// var method1 is MyMethod1(int p1, string p2, c => {Console.WriteLine("m1 finished");})
// var method2 is MyMethod2(float p1, string p2, object p3, c => {Console.WriteLine("m2 finished");})
class Parameter
{
public object Type {get; set;}
public object Value {get; set;}
}

var actions = new List<Tuple<Action, List<Parameter>>>();
actions.Add(new Tuple<Action, List<Parameter>>(method1, m1Params));
actions.Add(new Tuple<Action, List<Parameter>>(method2, m2Params));

如何执行我的操作?

foreach (var action in actions)
{
// ???
}

[编辑]
抱歉,忘记了...我还想同步这些操作,因为它们可以异步执行,其中一些必须按指定顺序执行。

所以如果我们有 method1method2 我也会提供类似的东西:

MyMethod1(p1, p2, c => {
MyMethod2(p1, p2, p3, c => {/* etc. if more */});
})

最佳答案

使用 DynamicInvoke 将在运行时解析该方法,这非常慢,为什么不将定义参数的责任传递给调用者。

var actions = new List<Action>()
actions.Add(new ()=> MyMethod1(p1, p2, c => {}));

这将在编译时解析方法并使函数更快。你只是像这样迭代。

foreach(var acc in actions) acc();

我相信这样会快很多

关于c# - 在同步模式下执行不同的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28340710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com