是否可以将命令行参数传递给spawnUri()中的新隔离

时间:2012-07-24 06:05:08

标签: dart dart-isolates

使用spawnUri()启动新的隔离时,是否可以将命令行参数传递给新的隔离?

例如:命令行:

dart.exe app.dart "Hello World"

在app.dart

#import("dart:isolate");
main() {
  var options = new Options();
  print(options.arguments);    // prints ["Hello World"]
  spawnUri("other.dart");
}

在other.dart

main() {
  var options = new Options();
  print(options.arguments);   // prints [] when spawned from app.dart.
                              // Is it possible to supply 
                              // Options from another isolate?
}

虽然我可以通过其SendPort将数据传递给other.dart,但我想要的具体用途是使用另一个尚未使用recievePort回调创建的dart应用程序(例如pub.dart或任何其他命令行)应用程序)。

2 个答案:

答案 0 :(得分:1)

您的示例不会使用当前稳定的SDK在 other.dart 中调用print(options.arguments);

然而

spanUri("other.dart");

产生一个乌里。那么spawnUri("other.dart?param=value#orViaHash");怎么样,并尝试通过

找到 param / value
print(options.executable);
print(options.script);

答案 1 :(得分:1)

据我所知,答案目前是否定的,并且很难通过消息传递进行模拟,因为这些选项在main()中不可用。

我认为这里有两个很好的功能请求。一种是能够在spawn()上传递选项,以便脚本可以从根隔离或生成的隔离中运行相同的。

另一个可用于实现第一个特性的功能是在调用main()之前传递由库处理的消息的方法,以便main()所依赖的对象可以使用来自产生的数据进行初始化隔离。