我们可以在 Xamarin iOS 中并行调用方法(带参数)吗?

Can we call methods (with parameters) in Parallel in Xamarin iOS?

我有一个使用 Parallel.Invoke 的 Xamarin 应用程序,它在 Android 上运行良好。

Parallel.Invoke
(
  () => AddOrReplaceWordsAndDefinitions(wordsAndDefinitions, conn),
  () => AddOrReplaceWords(wordsAndDefinitions, conn)
);

但是我现在正在尝试使用 iOS 版本,它崩溃不是因为 Parallel.Invoke,而是因为 lambda 表达式 () =>

如果我用下面的操作执行 Parallel.Invoke 它将在 iOS 上工作,但我不会有我的参数:

Parallel.Invoke
(
  Action1,
  Action2
);

我曾尝试使用 Tasks 而不是 parallel.invoke,但由于我的代码不使用异步,因此我必须在某些时候、此处或其他地方使用 lambda 表达式 () =>

我也尝试过使用委托,但它在 iOS 上都不起作用。所以到目前为止我发现的唯一选择是使用 System.Action 而不是普通方法并将参数存储在其他地方以在操作中访问。或者有两个版本的代码,一个带有 parallel.invoke 用于 android,一个没有用于 iOS.

如果您知道更好的选择,或者如果您知道为什么 lambda 表达式无法在 Xamarin 上运行 iOS 请告诉我。

我正在使用的参考文献:

好的,我找到了解决方案:

问题不是来自委托,而是来自我传递的“conn”对象参数。我无法设置连接(这里是 SQLite 连接)并通过不同的方法 运行 并行传递它。它适用于 Android 但不适用于 iOS。

所以我保留了 Parallel.Invoke 但删除了连接参数,现在我在各个方法中设置连接。