例如,这是一个简单的飞镖代码:
#import('dart:io');
main() {
var server = new HttpServer();
server.listen('127.0.0.1', 8080);
server.defaultRequestHandler = (HttpRequest request, HttpResponse response) {
response.outputStream.write('Hello, world'.charCodes());
response.outputStream.close();
};
}
当网络服务器打印“ Hello,world”时,我想运行一个进度 繁重的任务,但不想阻止当前的过程。我可以知道如何处理吗?谢谢。
我尝试了Process.run
和Process.start
,但没有成功。
答案 0 :(得分:1)
根据您的评论,我可以看出Dart产生外部流程的方式存在误解。当您在Dart中生成进程时,默认情况下该进程正在运行,因此Dart程序和外部程序分别运行(因此在不同的进程中),并且Dart程序可以执行其他任务。然后,您可以等待程序的结果(例如,程序关闭时)。
因此,以“&”为参数运行该进程没有多大意义(我想这是试图告诉它应与Dart程序分开运行)。
但是,由于您正在生成另一个Dart程序,因此您还应该考虑使用一个Isolate,它可以在另一个线程上执行您自己的方法,或者使用以下命令运行外部代码: https://api.dart.dev/stable/2.6.0/dart-isolate/Isolate/spawnUri.html